繁体   English   中英

Angular 具有未定义可观察对象的应用程序不会导致 ExpressionChangedAfterItHasBeenCheckedError 错误,但它似乎应该?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM