如何将我的User类设置为全局,因此我只需将其加载到一个组件中,然后可以在其他组件中使用它?

时间:2016-11-30 23:40:19

标签: angular

我尝试将变量放入我的服务中,但是当我尝试在我的组件中使用它时,它是未定义的。

在我的评论中'我必须使用的组件:

this.service.GetUser().subscribe( (data) => {
  this.user = data; 
}); 

对线程上的每个评论执行Web请求。它已经加载到更高级别的组件上,我该如何访问它?

感谢。

1 个答案:

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