2016-06-11 4 views
0

Ich habe den Folgecode, die das Anmeldeformular validieren und Fehlermeldung hinzufügen, wenn invalidate Daten eingegeben werden:Angular 2. Wie bekomme ich die innere ControlGroup von der äußeren ControlGroup?

this.registerForm = _fb.group({ 
     // email: new Control(this.registerContact.email, 
     //   Validators.compose([Validators.required, Validators.minLength(4)])), 
     emails:_fb.group({ 
      email: new Control(this.registerContact.email, 
       Validators.compose([Validators.required, Validators.minLength(4)])), 
     }), 

     passwords:_fb.group({ 
          password: new Control(this.registerContact.password, 
       Validators.compose([Validators.required, Validators.minLength(8)])), 
          repeat_password: new Control(this.registerContact.repeat_password, 
       Validators.required)},{ 
          validator:checkRepeatPassword}) 
    }); 

Und ich brauche Passwort und repeat_password von zu erhalten this.registerForm. Jetzt benutze ich den folgenden Code:

... 
onValueChanged(data: any) { 
    for (let fields in this.formError) { 
     // console.log('fields: '+fields); 
     for(let field in this.formError[fields]){ 

      // console.log('  field: '+field); 
     if (this.formError.hasOwnProperty(fields)) { 

      let innerContol = this.registerForm.controls[fields].controls[field]; 

      let hasError = innerContol.dirty &&!innerContol.valid; 
       console.log('hasError?:'+hasError) 
      this.formError[fields][field] = ''; 
      if (hasError) { 

       for (let key in innerContol.errors) { 
         if(field=='repeat_password'){ 
        // console.log('repat_error:'+key) 
       } 

        if (innerContol.errors.hasOwnProperty(key)) { 
         console.log(' >>>outer repeat_password error!'+innerContol.value);  

         this.formError[fields][field] += this._validationMessages[field][key] + ' '; 
         console.log(' >>>add follow errorMessage:'+this._validationMessages[field][key]); 
        } 
       } 
      } 
     } 
    } 
} 

Also, es ist Arbeit, aber ich habe die rot unterstrichen in diesem Verfahren

lassen innerContol = this.registerForm.controls [Felder]. Steuerelemente [Feld];

mit Warnung: Eigenschaft 'kontrolliert' existiert nicht auf Typ 'AbstractControl'

Vielleicht gibt es einen besseren Weg, Passwort und repeat_password zu erhalten?

Es gibt einen Link auf GitHub:

https://github.com/ProximaHaiz/Angular_2_book_library/blob/master/app_ts/registration/registration.component.ts

Antwort

Verwandte Themen