2017-04-11 9 views
5

मुझे ए 2 कस्टम सत्यापनकर्ता को ऑब्जेक्ट्स की एक सरणी पास करने की आवश्यकता है और फिर मैं उस सरणी में रिकॉर्ड्स के विरुद्ध टेम्पलेट संचालित फॉर्म फ़ील्ड के मान को सत्यापित करना चाहता हूं।कस्टम सत्यापनकर्ता (टेम्पलेट संचालित फॉर्म) के लिए कोणीय 2 पास सरणी

हालांकि मैं ऑब्जेक्ट को सत्यापनकर्ता के अंदर पुनर्प्राप्त नहीं कर सकता।

केवल एक चीज जिसे मैं देख सकता हूं उसका नाम स्ट्रिंग के रूप में है।

किसी भी मदद की सराहना की जाती है।

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

} 
+0

'@Attribute ('krediTuruValidator')' एक 'स्ट्रिंग' मूल्य लौटा रहा है, मैं तुम्हें पहले करने से पहले JSON करने के लिए इसे पार्स करने के लिए है लगता है कि' this.krediTuruValidator [0] .krediTuru' तेजी के लिए –

+0

धन्यवाद response.JSON.parse (this.krediTuruValidator) एक त्रुटि फेंकता है कि कह रहा है कि Kredi [] प्रकार का तर्क स्ट्रिंग को असाइन नहीं किया जा सकता है। – desperado06

उत्तर

1

मैं घटक में एक और तरीका करने के लिए मान्यता समारोह सौंपने के द्वारा इस समस्या का समाधान। इस तरह मैं किसी भी वस्तु का उपयोग कर सकते मैं

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

टेम्पलेट में, मुझे लगता है कि आपको [krediVadeSayisiValidator] = "validateKrediVadeSayisi" (कोष्ठक के बिना) होना चाहिए। हालांकि अच्छा समाधान। – Koja

संबंधित मुद्दे