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;
});