2017-04-12 20 views
2

イムので、私は、カスタムバリデータを書かれている私は値他のフィールドを取得しようとしたときに、他のフィールドに基づいてフォームフィールドの値を検証しようと、それは私が次のコードを試してみましたエラーが親切に私に事前角度2他のフィールド値に基づく検証?

export class CreatesessionComponent implements OnInit { 

     eventform : FormGroup ; 

    constructor(private formBuilder: FormBuilder) { 

     } 


     ngOnInit() { 

     this.eventform = this.formBuilder.group({ 
      eventname : new FormControl(''[Validators.required,Validators.pattern('[A-Za-z]+')]), 
      userlive : new FormControl('',[Validators.required,this.maxuser]), 
      totaluser :new FormControl('',[Validators.required,this.totaluser]) 

     }); 
     } 

totaluser(control : FormGroup) : {[s:string ]: boolean} { 
    console.log(control.controls['eventname'].value) 
// if(control.value > 20){ 
// return { total : true }; 
// } 
return null; 
} 
で感謝を助けるスロー

は、 'eventname'のプロパティを読み取ることができないため、コンソールにエラーを表示しません。

+0

'eventname'は、そのあなたのフォームのコントロールではない' this.eventForm'と呼ばれる形式のgruopであるが、そのグループを検索します合格。 – developer033

+0

だからthis.eventformをtotaluser()に渡す必要がありますか? –

+0

nopなら、次のように使うだけです: 'this.eventForm.get( 'eventname')。value'。 – developer033

答えて

3

私は現在、このようなこともしています。それが仕事を得るためには、私は、コントロールのグループを取得し、必要な制御のために

totaluser(control : AbstractControl) : {[s:string ]: boolean} { 
    const group = control.parent; 
    if (group) { 
    console.log(group.controls['eventname'].value) 
    } 
    return null; 
} 
+0

ありがとうございました。 –

+1

バリデータが複数回実行されているようで、フィールドが初期化されているときにエラーが表示されるようです: 'プロパティを読み取れません 'コントロール'of undefined'したがって、親が最初に未定義でないことを検証し、後に検証する必要があります。 –

関連する問題