输入数据:角度6,角度材料2。
我的自定义验证"密码匹配"为" passGroup"设置无效。 例如:
<div ngModelGroup="passGroup" password-matcher #passGroup="ngModelGroup">
<div class="formGroup">
<mat-form-field>
<input
matInput
type="password"
class='inputs'
[(ngModel)]='reg.password'
name='password'
required
minlength="8"
(input)='onChangeReg(reg)'
>
</mat-form-field>
</div>
<div class="formGroup">
<mat-form-field class="example-full-width">
<input
matInput
type="password"
class='inputs'
[(ngModel)]='reg.repeatPassword'
name='repeatPassword'
required
minlength="8"
(input)='onChangeReg(reg)'
>
</mat-form-field>
</div>
</div>
如果mat-form-field
p为ngModelGrou
,如何将无效设为invalid
?
例如:<mat-form-field setValidation='passGroup.invalid'>
答案 0 :(得分:0)
从理论上讲,您需要为ErrorStateMatcher
控件提供自定义MatInput
。 Angular Material有一个例子here。在ErrorStateMatcher
的{{1}}函数中,您将需要访问控件的父组并使用它的状态来返回字段控件的状态。
但是,我不确定这是否会按预期工作。由于父组状态依赖于子控件状态,因此您正在创建循环依赖关系。因此,您可能需要检查其他子控件是否存在错误,而不是显式检查父状态。
从设计的角度来看,一般情况下你可能不应该这样做,因为显示错误的关键是要引起用户注意哪些字段需要更正。标记一个没有错误的字段,如果它是另一个有错误的字段,则会使用户感到困惑。对于只有用户名和密码字段的登录控件,我可以看到这可能有利于阻止黑客入侵。