在subscribe()函数Angular 5中为局部变量赋值?

时间:2018-04-30 20:00:45

标签: angular angular5

我有一个变量:

isLoading = true;

在我的组件中,它更新了加载器动画的可见性。当我订阅ngOnInit()生命周期钩子中的服务时,我将此值设为false。

ngOnInit(){service.subscribe(data => {isLoading = false;});}

ngAfterViewInit(){if(isLoading == false){//do something}}

我的ngAfterViewInit()内的动作/功能取决于数据是否加载。但是当我console.log ngAfterViewInit()内的isLoading变量时,它仍然是真的,稍后某个值会变为false。

如何处理这个问题,我需要在加载数据时将isLoading设置为false?

1 个答案:

答案 0 :(得分:1)

问题是ngAfterViewInit方法和您的订阅功能没有以任何方式同步。忘记那种生命周期方法。最好定义自己的函数,并在数据就绪时调用它:

ngOnInit(){service.subscribe(data => {
  doSomething(data);
});

//ngAfterViewInit(){}

doSomething(data) {
  //do something
}