【发布时间】:2019-07-08 11:07:27
【问题描述】:
我想制作自定义验证器,该验证器仅在表单中的文本唯一时才使提交按钮可用。 我有 VulnarabilitiesClass 实例,它包含一个带有 id 和 name 字段的对象数组。 在我的表单中输入任何文本后,我收到此错误: 错误:未定义不是对象(评估“this.systemVulnarabilities”)
<form [formGroup]="profileForm">
<label>
Vulnarability Name:
<input type="text" formControlName="name" required>
</label>
</form>
<p>
Form Status: {{ profileForm.status }}
</p>
<form [formGroup]="profileForm" (ngSubmit)="onSubmit()">
<button type="submit" [disabled]="!profileForm.valid">Submit</button>
this.systemVulnarabilities = new VulnarabilitiesClass();
profileForm = this.fb.group({
name: ['', Validators.required,this.UniqueNameValidator],
});
private UniqueNameValidator(control: FormControl): ValidationErrors{
let vulnarabilityName: string = control.value;
console.log(vulnarabilityName);
console.log(this.systemVulnarabilities.displayList.toString());//no output already
let found: number = this.systemVulnarabilities.displayList.map(function(e) { return e.name; }).indexOf(vulnarabilityName); //mistake
if(found === -1){
return {invalidPassword: 'this name already exists'};
}
return null;
}
【问题讨论】:
-
你能显示你的漏洞类代码吗?
-
可能会显示更多的组件类代码。如果“this.systemVulnarabilities is undefined”肯定没有正确实例化。
标签: angular forms validation