我尝试将变量放入我的服务中,但是当我尝试在我的组件中使用它时,它是未定义的。
在我的评论中'我必须使用的组件:
this.service.GetUser().subscribe( (data) => {
this.user = data;
});
对线程上的每个评论执行Web请求。它已经加载到更高级别的组件上,我该如何访问它?
感谢。
答案 0 :(得分:0)
我不确定我是否遇到了您的问题,但是如何使用BehaviorSubject
?
它是包含最后一个值的可观察数据。
您的服务将拥有公共财产:
public User = new BehaviorSubject<yourTypeHere>(yourDefaultValueHere);
所有想要使用此值的组件都可以通过您的服务访问它:
this.service.User.value
或在模板中:
{{ service.User | async }}
或者您的组件可以订阅它,以获得更改..
this.service.User.subscribe(user => .. something cool ..);
您的服务需要refresh
功能,该功能首次在ngOnInit()
上调用..
ngOnInit() {
this.refreshUser();
}
// can be called to refresh User-property...
public refreshUser() {
this.http.get(...).subscribe(user => this.User.next(user));
}