【问题标题】:Validate password and confirm password Ng2验证密码并确认密码 Ng2
【发布时间】:2016-11-11 18:50:44
【问题描述】:

这是我的代码:

<form [formGroup]="registerForm" novalidate (ngSubmit)="doRegister()">
            <div 
                class="form-group" 
                [ngClass]="{'has-danger': registerForm.controls.email.invalid 
                    && !registerForm.controls.email.pristine}">
                <label>Email</label>
                <input
                  formControlName="email"
                  name="email"
                  [ngClass]="{'form-control-danger': registerForm.controls.email.invalid 
                    && !registerForm.controls.email.pristine}"
                  class="form-control"
                  type="email" />
            </div>
            <div 
                class="form-group"
                [ngClass]="{'has-danger': registerForm.controls.password.invalid 
                    && !registerForm.controls.password.pristine}">
                <label>Password</label>
                <input
                  class="form-control"
                  type="password"
                  formControlName="password"
                  name="password"
                  [ngClass]="{'form-control-danger': registerForm.controls.password.invalid 
                    && !registerForm.controls.password.pristine}" >
            </div>
            <div 
                class="form-group"
                [ngClass]="{'has-danger': registerForm.controls.passwordConfirm.invalid}" >
                <label>Password Confirm</label>
                <input
                  [ngClass]="{'form-control-danger': registerForm.controls.passwordConfirm.invalid}"
                  class="form-control"
                  type="password"
                  formControlName="passwordConfirm"
                  name="passwordConfirm" >
            </div>
            <button [disabled]="!registerForm.valid" class="btn btn-primary" type="submit">Register</button>
        </form>

以及表单初始化部分:

this.registerForm = this.formbuilder.group({
        email: ['', Validators.compose([Validators.required, validateEmail])],
        password: ['', Validators.compose([Validators.required, Validators.minLength(5)])],
        passwordConfirm: ['', ]
    })

现在我想验证密码和密码确认字段,但我不知道如何,我试图创建一个指令,但我无法将表单控件直接传递给它。谢谢。

编辑:

<div
                class="form-group"
                [ngClass]="{'has-danger': registerForm.controls.password.invalid
                    && !registerForm.controls.password.pristine}">
                <label>Password</label>
                <input
                  formControlName="password"
                  name="password"
                  class="form-control"
                  [ngClass]="{'form-control-danger': registerForm.controls.password.invalid
                    && !registerForm.controls.password.pristine}"
                  type="password"
                  validateEqual="registerForm.controls.passwordConfirm"
                  reverse="true" >
            </div>
            <div
                class="form-group"
                [ngClass]="{'has-danger': registerForm.controls.passwordConfirm.invalid}" >
                <label>Password Confirm</label>
                <input
                  formControlName="passwordConfirm"
                  name="passwordConfirm"
                  [ngClass]="{'form-control-danger': registerForm.controls.passwordConfirm.invalid}"
                  class="form-control"
                  type="password"
                  validateEqual="registerForm.controls.password" >
            </div>

它根本不起作用,没有错误。

【问题讨论】:

标签: angular typescript angular2-forms


【解决方案1】:

对于使用validateEqual 指令,请在 HTML 下方使用:

<div class="form-group" [ngClass]="{'has-danger': registerForm.controls.password.invalid && !registerForm.controls.password.pristine}">
  <label>Password</label>
  <input formControlName="password" name="password" class="form-control" type="password" [ngClass]="{'form-control-danger': registerForm.controls.password.invalid && !registerForm.controls.password.pristine}" validateEqual="passwordConfirm" reverse="true" >
</div>
<div class="form-group" [ngClass]="{'has-danger': registerForm.controls.passwordConfirm.invalid}">
    <label>Password Confirm</label>
    <input formControlName="passwordConfirm" name="passwordConfirm" [ngClass]="{'form-control-danger': registerForm.controls.passwordConfirm.invalid}" class="form-control" type="password" validateEqual="password" >
</div>

【讨论】:

  • 现在我得到了Unable to delete property 'validateEqual' of undefined or null reference
  • 很奇怪,我加到模块文件里还是不行,试了3次...
  • @LeDinhNhatKhanh 仅供参考,使用 registerForm.controls.password.invalid 时使用 registerForm.get('password).invalid 更安全,因为前者会在转译过程中产生错误。 https://github.com/qdouble/angular-webpack2-starter#aot--donts
猜你喜欢
  • 2015-04-03
  • 2023-02-23
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 2013-09-18
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多