2016-08-01 14 views
0

Ich habe meine Formulare in die neuen Formulare 0.2.0 konvertiert.Angular 2 New Forms - Benutzerdefinierte Eingabeüberprüfung

Natürlich, meine benutzerdefinierten Validatoren funktioniert nicht mehr ... irgendwelche Anweisungen oder Beispiele zum Schreiben von benutzerdefinierten Eingabe-Validatoren in dieser neuen Bibliothek?

+0

diese http://blog.Thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html –

Antwort

0

Eigentlich hatte ich ein sehr einfaches Problem: 1) I NG_VALIDATORS zu @ Winkel/forms Punkt nicht - zeigte auf alte Formen 2) Weniger wichtig ist, ich war nicht AbstractControl verwenden, nur die alte Steuerung und Während dies keine JS-Probleme verursachte, verursachte es Schreibfehler.

/** 
* Created by Franz on 5/8/2016. 
*/ 
import {Directive,provide} from '@angular/core'; 
import {NG_VALIDATORS} from '@angular/forms'; 
import {PASSWORD_REGEX} from '../../common/util/rejex'; 
import {Validator, AbstractControl} from "@angular/forms"; 

function validatePassword(control: AbstractControl) { 
    return PASSWORD_REGEX.test(control.value) ? null : { 
    validatePassword: {valid: false} 
    }; 
} 

@Directive({ 
    selector: '[validatePassword]', 
    providers: [ 
    provide(NG_VALIDATORS, { 
     useValue: validatePassword, // Alternative useExisting: PasswordValidator, but that creates and destroys objects every time. 
     multi: true 
    }) 
    ] 
}) 
export class PasswordValidator implements Validator { 
    constructor() {} 

    validate(c: AbstractControl) { 
    return PASSWORD_REGEX.test(c.value) ? null : {valid: false} 
    }; 
}