2017-04-12 73 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'的屬性undefined

+0

'eventname'在被叫形式gruop'在窗體控件this.eventForm'不是你'傳遞。 – 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

似乎驗證程序運行多次,當字段正在初始化,所以我得到的錯誤:'不能讀取屬性'控件'未定義'。所以,需要先驗證父類是否未定義,然後再進行驗證。 –