2016-11-23 1 views
2

Ich habe benutzerdefinierte Validator (cannotContainSpace) erstellt und möchte es Vorlage Komponente (postmessage.component) verwenden, aber irgendwie Validator kann nicht meine benutzerdefinierte Validator-Klasse, die ich erstellt habe .. hier ist die Compiler-Nachricht: enter image description hereHinzufügen von benutzerdefinierten Validatoren in angular2

usernamevalidator.ts

import {FormControl} from '@angular/forms'; 

export class UsernameValidator{ 
    static cannotContainSpace(control:FormControl){ 
     if(control.value.indexOf('')>=0) 
      return { cannotContainSpace:true }; 
     return null; 
    } 
} 

postmessage.component.ts

import { Component } from '@angular/core'; 
import {FormControl,FormGroup,FormBuilder,Validators} from '@angular/forms'; 
import {UsernameValidator} from '../../validators/usernamevalidator'; 

@Component({ 
    moduleId:module.id, 
    selector: 'post-message', 
    templateUrl: '../../templates/postmessage.component.html' 
}) 
export class PostComponent { 
    form : FormGroup; 
    constructor(fb:FormBuilder){ 
     this.form = fb.group({ 
      username:['', Validators.compose([Validators.required, Validators.cannotContainSpace])],    
      email:['', Validators.required],   
      message:['', Validators.required]   
     }); 
    } 
    signup(){ 
     console.log(this.form.value); 
    } 
} 
+1

Der folgende Link könnte mehr Hilfe bieten - https://blog.Thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html – ShaileshDev

Antwort

4
username:['', Validators.compose([Validators.required, Validators.cannotContainSpace])], 

sollte nur bietet Validatoren

username:['', Validators.compose([Validators.required, UsernameValidator.cannotContainSpace])], 

Die Validators Klasse sein, die in der Validators Klasse definiert sind.

Verwandte Themen