2016-11-23 12 views
2

私はカスタムバリデータ(cannotContainSpace)を作成し、テンプレートコンポーネント(postmessage.component)を使用したいと思いますが、何らかのバリデータが私の作成したカスタムバリデータクラスを見ることができません..ここにコンパイラメッセージがあります: enter image description hereangular2にカスタムバリデータを追加

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

次のリンクをクリックするとヘルプが表示されます。 https://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html – ShaileshDev

答えて

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

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

ValidatorsクラスのみValidatorsクラスで定義されているバリデータを提供しなければなりません。

関連する問題