![](/img/trans.png)
[英]Angular 4 ExpressionChangedAfterItHasBeenCheckedError with observable but not promise
[英]Angular app with undefined observable does not cause ExpressionChangedAfterItHasBeenCheckedError Error but it seems like it should?
ExpressionChangedAfterItHasBeenCheckedError 是有道理的。 Angular 跟踪一些 state,因此它可以判断何时重新渲染。 如果 state 在渲染之间发生变化,这是不可取的。
我有一个 Angular 8 Stackblitz 在 AfterViewInit 上分配可观察对象时会引发该错误,但会渲染: https://stackblitz.com/edit/multiple-observable-assigns-mjxvat?file=src/app/app.component。
还有一个 Angular 12 示例,它不会引发错误但不会呈现任何内容: https://stackblitz.com/edit/angular-ivy-zduzrq?file=src/app/app.component.ts
框架发生了哪些变化来改变这种行为? 我找不到关于它的文档。
您观察到的行为与框架不同版本之间的任何变化无关。
这种变化行为的原因是在这两种情况下都使用了 ChangeDetectionStrategy。 在 Angular 8 示例的情况下,没有设置 ChangeDetectionStrategy,因此使用Default
策略; 而在 Angular 12 示例中,您已将策略显式设置为OnPush
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.