我正在显示和隐藏基于同一 FormGroup 中另一个 FormControl 的 FormControl,它使用下面的方法工作,但是当我尝试重置隐藏的输入以便提交时,它的值未发送,我收到以下错误。
组件方法
public hasOtherFundingSource(index: number) {
const formGroup = this.overviewFunds.at(index);
const source = formGroup.get('source').value;
if (source !== 'other') {
formGroup.get('other_source_desc').reset(); // Throws error
return false;
} else {
return true;
}
}
错误
ExampleComponent.html:12 ERROR Error:
ExpressionChangedAfterItHasBeenCheckedError:
Expression has changed after it was checked.
Previous value: 'true'. Current value: 'false'.
在@yurzui的一些帮助下,我创建了一个显示错误的插件。只需在选择字段中更改other
为another
并观察控制台注销错误。该错误似乎与将 FormGroup 拆分为子组件以减少每个类中的大小和逻辑有关。
如果您查看创建的第一个plunker,则当表单封装在应用程序组件中时不会发生错误。