我在Angular 6应用程序上使用反应形式,其中包含(以及其他)关键字列表(formarray)。用户可以删除一个关键字,然后使用一个自定义验证程序来检查是否应至少包含1个关键字。
验证器会正确调用并起作用,但是:当我删除最后一个关键字时:关键字formarray出错并且变得无效。但是 projectform.keywords属性保持有效,因此表单也保持“有效”。 我究竟做错了什么。该无效状态又如何在projectform.keywords属性中变为活动状态,从而使窗体无效?当验证程序失败时,我需要表格变得无效...
我的代码:
projectForm: FormGroup;
keywords: FormArray;
ngOnInit() {
this.buildKeywordsArray();
this.projectForm = this.fb.group({
name: [this.project.name, Validators.required],
description: [this.project.description, Validators.required],
keywords: this.keywords
});
this.projectForm.statusChanges.subscribe(() => this.updateErrorMessages());
}
buildKeywordsArray() {
this.keywords = this.fb.array(this.project.keywords, PojectValidators.atLeastOneKeyword);
}