2017-04-20 2 views
0

Also habe ich versucht, meinen abstrakten Kontrollwert auf den Punkt zu teilen. veranlassen, seine eine WährungSplit ist keine Funktion

aber ich bekommt immer noch einen Fehler

dies der Code ist

@Directive({ 
    selector: '[NumberValidate][ngModel]', 
    providers: [ 
     { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumberValidator), multi: true } 
    ] 
}) 
export class NumberValidator implements Validator { 

    constructor(@Attribute('NumberValidate') public NumberValidate: string, 
     @Attribute('reverse') public reverse: string) { 
    } 

    validate(control: AbstractControl): { [key: string]: any; } { 
     const DATE_REGEX = /([\-\+]{0,1}\d[\d\.\,]*[\.\,][\d\.\,]*\d+)/; 


     if ((control.value && control.value <= 0) || (control.value != null && DATE_REGEX.test(control.value) && control.value.split('.')[1] != null && control.value.split('.')[1].length > 2)){ 
      return { 'incorrectNumberFormat': true }; 
     } 
     return null; 
    } 



} 

der Fehler dadurch

error_handler.js ist: 54 AUSNAHME: Fehler bei ./ RegisterForm Klasse RegisterForm - Inline-Vorlage: 200: 28 verursacht durch: control.value.split ist keine Funktion

+0

Was bekommen Sie für 'console.log (control.value)'? –

+0

wenn ich 1.0 setze es wirft keinen Fehler und wenn ich 1.003 gebe es wirft den Fehler ... die Konsole gibt mir den richtigen Wert der Eingabe, weil es zuvor funktioniert hat, aber meine Hochschule versucht, eine Erweiterung auf sie zu machen – HomeForce

+0

Und gibt es ** nur ** den richtigen Wert oder erhalten Sie auch 'null'? Was ist der gedruckte Wert unmittelbar vor dem Auslösen der Ausnahme? –

Antwort

0

Ich habe eine Regex gemacht, um die Eingabe zu testen und brauchte die Aufteilung nicht mehr, ich denke, das Problem ist auf die Tatsache, dass der Eingabetyp eine Zahl ist und keine Zeichenfolge ... Split kann nur auf a verwendet werden String und nicht auf einer Zahl. das ist was ich denke