使用异步管道时ExpressionChangedAfterItHasBeenCheckedError

时间:2020-07-13 08:08:07

标签: angular asynchronous observable

当我使用异步管道时,出现此错误(ExpressionChangedAfterItHaHasBeenCheckedError)!代码为here。 我在哪里做错了?

1 个答案:

答案 0 :(得分:-1)

我认为错误来自{{users$|async|json}}。 在布局服务中,它返回null并尝试显示它会导致错误。

我像这样测试过,没有任何错误。

  <h1>Layout Component</h1>
  <div>
    <div *ngIf="layoutService.getSpinnerState|async">
      <span>SPINING...
      </span>
    </div>
  </div>

  <p>StateSpinner: {{ layoutService.getSpinnerState|async }} </p> 
ngOnInit() {
    this.layoutService.withSpinner(this.profileService.getUser()).subscribe();
  }

编辑:

如果我理解错误,那就是您所观察到的变化。

在致电布局服务时,您可以执行类似的操作。你怎么看 ?对我来说看起来更干净。

withSpinner<T>(obs:Observable<T>){
    this.setSpinnerState(true)
    return obs.pipe(
      delay(2000),
      finalize(()=>this.setSpinnerState(false))
    );
  }