Validation 角度2传递数组到自定义验证器(模板驱动表单)
我需要将一个对象数组传递给a2自定义验证器,然后根据该数组中的记录验证模板驱动表单字段的值 但是,我无法检索验证程序中的对象 我唯一能看到的就是它的名称为string 任何帮助都将不胜感激Validation 角度2传递数组到自定义验证器(模板驱动表单),validation,angular,typescript,Validation,Angular,Typescript,我需要将一个对象数组传递给a2自定义验证器,然后根据该数组中的记录验证模板驱动表单字段的值 但是,我无法检索验证程序中的对象 我唯一能看到的就是它的名称为string 任何帮助都将不胜感激 <label class="btn btn-default btn-sm" [(ngModel)]="krediHesaplamaModel.radioModelKrediTur" name="krediHesaplamaModel.radioModelKrediTur" btnRadio="0"
<label class="btn btn-default btn-sm"
[(ngModel)]="krediHesaplamaModel.radioModelKrediTur" name="krediHesaplamaModel.radioModelKrediTur"
btnRadio="0"
(click)="onRadioButtonKrediHesaplamaTurChange()" krediTuruValidator="this.krediList" >
我通过将验证函数委托给组件中的另一个方法解决了这个问题。这样我就可以访问我想要的任何对象
import { Directive, forwardRef, Attribute, Input } from '@angular/core';
import { Validator, ValidatorFn, AbstractControl, NG_VALIDATORS } from '@angular/forms';
@Directive({
selector: '[krediVadeSayisiValidator][formControlName],[krediVadeSayisiValidator][formControl],[krediVadeSayisiValidator][ngModel]',
providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => KrediVadeSayisiValidator), multi: true },]
})
export class KrediVadeSayisiValidator implements Validator {
@Input() krediVadeSayisiValidator: ValidatorFn; //same name as the selector
validate(c: AbstractControl): { [key: string]: any } {
return this.krediVadeSayisiValidator(c);
}
}
如何在模板中访问它
<input type="number" class="form-control" name="krediVadeSayisi" [(ngModel)]="krediHesaplamaModel.krediVadeSayisi" #krediVadeSayisi="ngModel"
required maxlength="2" [krediVadeSayisiValidator]="validateKrediVadeSayisi()" /> /*this function is inside the component*/
/*此函数位于组件内部*/
@Attribute('kredituruvalidater')
正在返回一个字符串
值,我想您必须先将其解析为JSON,然后再执行此操作。kredituruvalidater[0]。krediTuru
感谢您的快速响应。JSON.parse(this.kredituruvalidater)抛出一个错误,表示Kredi[]无法分配给字符串。在模板中,我认为您需要[KredivadeSayisValidator]=“ValidateCredivadeSayisi”(不带括号)。不过这是个不错的解决方案。
<input type="number" class="form-control" name="krediVadeSayisi" [(ngModel)]="krediHesaplamaModel.krediVadeSayisi" #krediVadeSayisi="ngModel"
required maxlength="2" [krediVadeSayisiValidator]="validateKrediVadeSayisi()" /> /*this function is inside the component*/