Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2在加载子组件之前获取数据_Angular - Fatal编程技术网

Angular 2在加载子组件之前获取数据

Angular 2在加载子组件之前获取数据,angular,Angular,我想在应用程序的主根组件中获取用户数据,然后在用户数据存储到服务中后继续加载其他组件。我怎样才能做到这一点?目前,我有这样的想法: @Injectable() export class UserService { user: Subject<User> = new BehaviorSubject(new User()); constructor(private _httpService: HTTPService){} getUser(){ return this.use

我想在应用程序的主根组件中获取用户数据,然后在用户数据存储到服务中后继续加载其他组件。我怎样才能做到这一点?目前,我有这样的想法:

@Injectable()
export class UserService {

user: Subject<User> = new BehaviorSubject(new User());

constructor(private _httpService: HTTPService){}

getUser(){
    return this.user;
}

getUserFromAPI(){
    this._httpService.get('user')
        .map(data => data.json())
        .subscribe(data => {
            this.user.next(data);
        });
}

您可以使用
APP\u初始值设定项
在数据可用之前等待渲染任何组件

或者,您可以使用
*ngIf
来防止在数据可用之前渲染组件



你说的“静态访问”是什么意思?我的意思是我可以像这样在组件中获取用户数据。user=\u userService.getUser();如果您使用异步调用获取数据,这是不可靠的。是的,但请阅读问题。我想让用户加载暂停加载子组件,直到用户被存储到服务中。这就是我下面的答案。使用*ngIf,我无法找到加载某个组件的主出口。你知道我如何解决这个问题吗?如果组件是由路由器添加的,请使用解析器纠正我的错误,但据我所知,根组件没有通过路由器加载?是的,根组件不是由路由器添加的,但问题是在数据可用之前没有添加子组件。如果您的子组件是由路由器添加的,那么您应该使用
resolve
延迟添加组件,直到数据可用。但这不是在一个地方处理的。这不是我所要求的解决方案。这意味着我需要通过每一条新的路线,增加决心。
this._userService.getUser().subscribe(data => {
        this.user = data;
    });