How can I manually set an Angular form field as invalid?

后端 未结 9 1642
野的像风
野的像风 2020-11-28 01:58

I am working on a login form and if the user enters invalid credentials we want to mark both the email and password fields as invalid and display a message that says the log

9条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-28 02:21

    Here is an example that works:

    MatchPassword(AC: FormControl) {
      let dataForm = AC.parent;
      if(!dataForm) return null;
    
      var newPasswordRepeat = dataForm.get('newPasswordRepeat');
      let password = dataForm.get('newPassword').value;
      let confirmPassword = newPasswordRepeat.value;
    
      if(password != confirmPassword) {
        /* for newPasswordRepeat from current field "newPassword" */
        dataForm.controls["newPasswordRepeat"].setErrors( {MatchPassword: true} );
        if( newPasswordRepeat == AC ) {
          /* for current field "newPasswordRepeat" */
          return {newPasswordRepeat: {MatchPassword: true} };
        }
      } else {
        dataForm.controls["newPasswordRepeat"].setErrors( null );
      }
      return null;
    }
    
    createForm() {
      this.dataForm = this.fb.group({
        password: [ "", Validators.required ],
        newPassword: [ "", [ Validators.required, Validators.minLength(6), this.MatchPassword] ],
        newPasswordRepeat: [ "", [Validators.required, this.MatchPassword] ]
      });
    }
    

提交回复
热议问题