[似乎几乎所有曾经涉猎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
这里发生了什么,最好的方法是什么?
问题是changeDetect在ngOnInit生命周期中出于所有目的均已关闭。 (并且您应该考虑将其关闭,以免之前发生的事情,例如构造函数)
仅提及另一种可能的解决方案。