🐞 bug报告
受影响的软件包
这个问题是由 @angular/elements 7.1.0 包引起的。
是否为回归?
是的,之前的版本 6.1.9 也存在这个问题。
问题描述
popup-element 是 angular element 创建的一个自定义元素。就像 angular 文档中的示例一样。https://angular.cn/guide/elements#example-a-popup-service
我是这样使用 popup-element 的:
<popup-element [message]="'ww'"></popup-element>
在 AppComponent 的 html 中添加以下代码。
🔬 最小复现
https://github.com/wszhi/angular-element-demo
🔥 异常或错误
这个错误会在控制台显示。
ng:///AppModule/PopupComponent.ngfactory.js:8 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'null: undefined'. Current value: 'null: ww'.
at viewDebugError (vendor.js:47267)
at expressionChangedAfterItHasBeenCheckedError (vendor.js:47244)
at checkBindingNoChanges (vendor.js:47416)
at checkNoChangesNodeInline (vendor.js:51494)
at checkNoChangesNode (vendor.js:51467)
at debugCheckNoChangesNode (vendor.js:52362)
at debugCheckRenderNodeFn (vendor.js:52294)
at Object.eval [as updateRenderer] (ng:///AppModule/PopupComponent.ngfactory.js:12)
at Object.debugUpdateRenderer [as updateRenderer] (vendor.js:52279)
at checkNoChangesView (vendor.js:51302)
🌍 你的环境
Angular 版本:
Angular CLI: 7.3.8
Node: 10.12.0
OS: darwin x64
Angular: 7.2.5
还有其他相关信息吗?
在 Chrome 浏览器中,版本号为 73.0.3683.103(官方构建)(64位)
3条答案
按热度按时间siotufzp1#
我相信这里的问题是你在父级Component构造函数内部定义了元素(在更改检测周期的中间)。我们可能可以在下一个API中平滑处理这个问题。
y0u0uwnf2#
有任何更新吗?我遇到了相同的问题。
dgsult0t3#
请注意,这仍然是v9中的一个问题,尽管错误消息略有不同(updated StackBlitz):
ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后发生了变化。
之前的值为'@State':'closed'。当前值:'opened'。
有趣的是,只有在使用
[message]="'Some message'"
时才会抛出错误,而在使用message="Some message"
时不会。顺便说一下,解决方法是将
customElements.define()
调用移动到组件的ngOnInit()
生命周期钩子中。