Angular 密码比较指令@input在角度模板驱动形式中始终未定义
您好,我正在尝试创建一个角度指令来比较密码和确认密码。我尝试了网络上显示的许多示例,但似乎都不起作用。在验证函数中,@input值始终未定义,哪里会出错 下面是我的模板代码Angular 密码比较指令@input在角度模板驱动形式中始终未定义,angular,Angular,您好,我正在尝试创建一个角度指令来比较密码和确认密码。我尝试了网络上显示的许多示例,但似乎都不起作用。在验证函数中,@input值始终未定义,哪里会出错 下面是我的模板代码 <div> <h1>Add user</h1> <form #f="ngForm" novalidate> <div> <label>Password</label> <input
<div>
<h1>Add user</h1>
<form #f="ngForm" novalidate>
<div>
<label>Password</label>
<input type="password" name="password" [ngModel]="user.password"
required #password="ngModel">
<small [hidden]="password.valid || (password.pristine &&
!f.submitted)">
Password is required
</small>
</div>
<div>
<label>Retype password</label>
<input type="password" name="confirmPassword"
[ngModel]="user.confirmPassword"
required compare="password" #confirmPassword="ngModel">
<small [hidden]="confirmPassword.valid ||
(confirmPassword.pristine && !f.submitted)">
Password mismatch
</small>
</div>
</form>
</div>
它打印未定义,因为您通过
useClass
告诉Angular为validator创建一个新的ValidateEqualDirective实例:
providers:[{provide:NG_VALIDATORS, useClass:ValidateEqualDirective
^^^^
这意味着您有两个类的实例:第一个是绑定到html结构的,第二个是为验证而创建的
您应该使用相同的指令实例:
providers:[{provide:NG_VALIDATORS, useExisting: ValidateEqualDirective
^^^^^^^^^^^^^^^
reuse current directive instance
providers:[{provide:NG_VALIDATORS, useExisting: ValidateEqualDirective
^^^^^^^^^^^^^^^
reuse current directive instance