加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

验证 – 角度2传递数组到自定义验证器(模板驱动形式)

发布时间:2020-12-17 18:10:20 所属栏目:安全 来源:网络整理
导读:我需要将一个对象数组传递给a2自定义验证器,然后我想根据该数组中的记录验证模板驱动的表单字段的值. 但是我无法检索验证器内的对象. 我唯一能看到的是它的名字作为字符串. 任何帮助都非常感谢. label class="btn btn-default btn-sm" [(ngModel)]="krediHes
我需要将一个对象数组传递给a2自定义验证器,然后我想根据该数组中的记录验证模板驱动的表单字段的值.

但是我无法检索验证器内的对象.

我唯一能看到的是它的名字作为字符串.

任何帮助都非常感谢.

<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;
    }

}

解决方法

我通过将验证函数委托给组件中的另一个方法来解决了这个问题.这样我就可以访问我想要的任何对象

import { Directive,Attribute,Input } from '@angular/core';
import { Validator,ValidatorFn,NG_VALIDATORS } from '@angular/forms';


@Directive({
    selector: '[krediVadeSayisiValidator][formControlName],[krediVadeSayisiValidator][formControl],[krediVadeSayisiValidator][ngModel]',useExisting: forwardRef(() => KrediVadeSayisiValidator),]

})


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读