如何将无效设置为" mat-form-field"?

时间:2018-05-21 10:18:29

标签: angular angular-material2

输入数据:角度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'>

1 个答案:

答案 0 :(得分:0)

从理论上讲,您需要为ErrorStateMatcher控件提供自定义MatInput。 Angular Material有一个例子here。在ErrorStateMatcher的{​​{1}}函数中,您将需要访问控件的父组并使用它的状态来返回字段控件的状态。

但是,我不确定这是否会按预期工作。由于父组状态依赖于子控件状态,因此您正在创建循环依赖关系。因此,您可能需要检查其他子控件是否存在错误,而不是显式检查父状态。

从设计的角度来看,一般情况下你可能不应该这样做,因为显示错误的关键是要引起用户注意哪些字段需要更正。标记一个没有错误的字段,如果它是另一个有错误的字段,则会使用户感到困惑。对于只有用户名和密码字段的登录控件,我可以看到这可能有利于阻止黑客入侵。