我正在构建一个带有输入参数“valid”的组件。如果将该值绑定到父组件的成员上,一切正常。但是,如果将其绑定到模板引用中,如下所示:
<step [valid]="name.valid">
<input type="text" name="name"
#name="ngForm"
[(ngModel)]="name"
required>
</step>
我遇到了这个问题:
Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'
我对此有一定的理解。我知道 ngForm 的有效检查发生在组件初始化之后,因此值已经更改了。 但我不明白为什么这是一个问题,以及为什么可以通过调用 enableProdMode() 来解决,而 enableProdMode() 又为什么是一个坏主意。
我还尝试使用 ChangeDetectorRef 的 .detach() 和 .reattach() 方法来暂时禁用变更检测,但这并没有解决问题,听起来也不是一个好建议。
您有什么想法吗?
<form>
标签是什么样子的? - Günter Zöchbauer#name="ngForm"
,但你需要一些方法将输入转换为 Angular 表单控件。尝试添加ngControl="name"
,然后#name="ngForm"
就不会再出错了(如果你需要它做其他事情的话)。 - Günter Zöchbauer