今天对于Angular ng如果没有异步/可观察到的状态更改错误,没有很好的答案

问题描述 投票:1回答:2

[似乎几乎所有曾经涉猎Angular的人都曾遇到过这个问题:

您使用*ngIf指令创建Dom元素:

<div *ngIf="array.length">
Don't show me until I'm ready please !
</div>

您当场评估孩子是否应该存在。

然后,例如,您以api响应的形式接收数据:

 this.http.post(
      this.url,
      args,
      this.authenticationService.getRequestOptions()
    ).subscribe(data => {
        this.array = data;
        console.log('truthy? : ', this.array.length);
    }
 );

由于某种原因,角度更改检测此时失败,并且*ngIf Dom节点未评估并变为可见。

即使您的控制台给了您:

truthy? : 1

这里发生了什么,最好的方法是什么?

angular state onchange angular-ng-if
2个回答
2
投票

问题是changeDetect在ngOnInit生命周期中出于所有目的均已关闭。 (并且您应该考虑将其关闭,以免之前发生的事情,例如构造函数)


2
投票

仅提及另一种可能的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.