【发布时间】:2019-03-21 13:58:22
【问题描述】:
我正在使用带有材料设计组件的 Angular 7
我需要将 requireMatch 验证添加到 mat-autocomplete。
我已经使用参数创建了自定义验证,但参数值确实会动态变化。
下面是我的组件代码。
this.stepFormGroup = this.formBuilder.group({
AccessCode: ["", [Validators.required, this.requireMatch(this.accessCodeList)]]
});
////require-match validation for access-code
requireMatch = (accessCodes: string[]) => {
return (control: FormControl) => {
const selection: any = control.value;
console.log("accessCodes", accessCodes, "selection", selection);
if (accessCodes.indexOf(selection)===-1) {
return { requireMatch: true };
}
return null;
}
}
我面临的问题是我在accessCodes 中的requireMatch 中总是变得空(init)。
this.accessCodeList 的更改不会反映给验证器。
更改this.accessCodeList 后的含义,它不会在requireMatch 验证器中获得更新的数组。
那么有人知道如何在自定义验证器中传递动态参数吗?
【问题讨论】:
-
能否提供stackblitz/
-
而且问题也不清楚--) 只需描述您想要什么? 和目前没有什么工作
-
我认为,你需要使用,当更改“this.accessCodeList”时,
this.stepFormGroup.get('AccessCode').setValidators([Validators.required, this.requireMatch(this.accessCodeList)]) -
这是一个可行的解决方案:stackblitz.com/edit/angular-9nggzx
标签: angular angular-reactive-forms angular-validation angular-validator