Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 角度2传递数组到自定义验证器(模板驱动表单)_Validation_Angular_Typescript - Fatal编程技术网

Validation 角度2传递数组到自定义验证器(模板驱动表单)

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"

我需要将一个对象数组传递给a2自定义验证器,然后根据该数组中的记录验证模板驱动表单字段的值

但是,我无法检索验证程序中的对象

我唯一能看到的就是它的名称为string

任何帮助都将不胜感激

<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*/