角度2将数组传递给自定义验证器(模板驱动形式) [英] angular 2 pass array to custom validator (Template driven form)
本文介绍了角度2将数组传递给自定义验证器(模板驱动形式)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要将对象数组传递给a2自定义验证器,然后希望针对该数组中的记录来验证模板驱动的表单字段的值.
I need to pass an array of objects to the a2 custom validator and then I d like to validate the value of the template driven form field against the records in that array.
但是我无法在验证器中检索对象.
However I can not retrieve the object inside the validator.
我唯一看到的是它的名称,为字符串.
The only thing I can see is its name as string.
我们非常感谢您的帮助.
Any help is kindly appreciated.
<label class="btn btn-default btn-sm"
[(ngModel)]="krediHesaplamaModel.radioModelKrediTur" name="krediHesaplamaModel.radioModelKrediTur"
btnRadio="0"
(click)="onRadioButtonKrediHesaplamaTurChange()" krediTuruValidator="this.krediList" >
import { Directive, forwardRef, Attribute } from '@angular/core';
import { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';
import {Kredi} from '../kredi';
@Directive({
selector: '[krediTuruValidator][formControlName],[krediTuruValidator][formControl],[krediTuruValidator][ngModel]',
providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => KrediTuruValidator), multi: true },
]
})
export class KrediTuruValidator implements Validator {
constructor( public krediTuruValidator: Kredi[]) { }
validate(c: AbstractControl): { [key: string]: any } {
console.log('KL' + this.krediTuruValidator[0].krediTuru); //UNDEFINED
let v = c.value;
return null;
}
}
推荐答案
我通过将验证功能委托给组件中的另一种方法解决了此问题.这样我就可以访问任何我想要的对象
I resolved this issue by delegating the validation function to another method in the component. That way I can access any object I desire
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*/
这篇关于角度2将数组传递给自定义验证器(模板驱动形式)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文