我正在使用带有反应形式的 Angular 5
子组件类:
export class UserEditor implements OnInit {
public userForm: FormGroup;
...
ngOnInit() {
this.createFormControls();
this.createForm();
}
createFormControls() {
this.userName = new FormControl('', [
Validators.required,
Validators.minLength(4)
]);
this.firstName = new FormControl('', Validators.required);
this.lastName = new FormControl('', Validators.required);
this.email = new FormControl('', [
Validators.required,
Validators.pattern("[^ @]*@[^ @]*")
]);
}
createForm() {
this.userForm = new FormGroup({
userName: this.userName,
name: new FormGroup({
firstName: this.firstName,
lastName: this.lastName,
}),
email: this.email,
});
}
在我的父组件表单中,如果上述验证器无效,我将禁用按钮
在父组件html中:
<button class="btn btn-sm btn-primary" (click)="saveUser()" [disabled]="!userListChild?.userForm.valid">
在父组件类中:
export class UserList implements OnInit {
@ViewChild(UserEditor) userListChild: UserEditor;
一切正常,但是我得到了众所周知的错误
ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:“真”。当前值:'假
我尝试了此博客中列出的更改检测解决方案,但没有帮助。
所以我被卡住了,除非我忽略错误,因为应用程序可以很好地处理错误。