我使用的是角度7,我正在为其中一种表格使用反应式表格,代码如下。 (Stackblitz Here)
模板
<form [formGroup]="SignupForm" *ngIf="SignupForm">
<input type="text" class="form-control" id="username" formControlName = "username">
<div *ngIf="SignupForm.errors?.errors">Error</div>
</form>
打字稿
export class AppComponent implements OnInit {
SignupForm: FormGroup;
constructor() {
}
ngOnInit() {
setTimeout(() => {
this.SignupForm = new FormGroup({
'username': new FormControl('Value'),
'email': new FormControl()
});
this.SignupForm.setErrors({errors: 'Error'});
})
}
}
您可以看到,表单初始化后,我正在尝试设置错误(在我的实际情况下,我将基于后端数据进行一些验证,然后执行此操作。)。但是即使将SignupForm.errors
设置了错误对象,该错误似乎也没有出现。
但如果我这样做
setTimeout(() => { this.SignupForm.setErrors({errors: 'Error'});})
一切正常。我是在做错什么还是我可以报告的有角度的错误。请帮忙。谢谢。
注意
实际上,我的表单来自异步的后端。从元数据创建表单后,我进行验证并设置错误。因此,转移到任何生命周期挂钩都不会改变我的任何行为。
答案 0 :(得分:0)
能否在 ngAfterViewInit
上写 setErrors这是示例 TS
export class AppComponent implements OnInit {
SignupForm: FormGroup;
constructor() {
}
ngOnInit() {
this.SignupForm = new FormGroup({
'username': new FormControl('Value'),
'email': new FormControl()
});
}
ngAfterViewInit(){
this.SignupForm.setErrors({errors: 'Error'});
}
让我知道它是否有效。