【发布时间】:2019-08-26 20:50:18
【问题描述】:
查看以下 Stackblitz:https://stackblitz.com/edit/angular-psqzbo?file=src%2Fapp%2Fhello.component.ts
请注意,width 成员有两个绑定:一个在模板中,另一个是主机绑定。主机绑定现在被注释掉了。请注意,没有抛出 ExpressionChanged 错误 - 这是因为在我们更新 ngAfterViewInit 中的 width 之后调用了 this.cdr.detectChanges()。
现在取消注释主机绑定。观察是否引发了 ExpressionChanged 错误。为什么?这些绑定有何不同?这是一个错误吗?
编辑:这不是链接问题的欺骗。我知道为什么这里需要detectChanges,我的问题是为什么它在主机绑定上不起作用。请重新阅读。
【问题讨论】:
-
不,拜托,这不是骗子。请重新阅读这个问题,我担心它会被当作骗子关闭......
-
对该问题的接受答案(将代码移动到
ngOnInit)解决了您的示例中的问题,此外,问题上的解释提供了一个很好的问题演练。该解决方案不适合您的情况吗? -
不,这不适用于我的情况,因为 offsetWidth 仅在 ngAfterViewInit 中可用(然后视图已经合成)。视图尚未在 ngOnInit 或 ngAfterContentInit 中组合。
-
我已经撤回了我的重复投票(因为你是正确的),很快就会写一个答案
标签: javascript angular