angular - 如何将无效设置为“mat-form-field”?
问题描述
输入数据:角度 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
如果ngModelGrou
p 是,我如何设置无效invalid
?例如: <mat-form-field setValidation='passGroup.invalid'>
解决方案
从理论上讲,您需要为ErrorStateMatcher
控件MatInput
提供自定义。Angular Material这里有一个例子。在ErrorStateMatcher
'sisErrorState
函数中,您将需要访问控件的父组并使用它的状态来返回字段控件的状态。
但是,我不确定这是否会按预期工作。因为父组状态依赖于子控件状态,所以您正在创建循环依赖。因此,您可能需要检查其他子控件的错误,而不是显式检查父状态。
从设计的角度来看,通常您可能不应该这样做,因为显示错误的目的是让用户注意哪些字段需要更正。将一个没有错误的字段标记为错误,而另一个字段有错误会混淆用户。对于只有用户名和密码字段的登录控件,我可以看到这可能有助于阻止黑客攻击。
推荐阅读
- laravel - Laravel updateOrCreate 忽略 1 个字段
- kubernetes - 帐户恢复端点在 Kubernetes 设置中的 WSO2 Identity Server 5.10.0 中无法与 proxyPort 一起使用
- rider - Jetbrains Rider 无法恢复私有 nuget 存储库
- angular - NG0100:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改
- typescript - 从用户获取任何类型的用户文本
- python - 在Django中计算两个指定天之间的天数?
- spring-integration - 存在时替换文件在 Spring Integration Smb 中不起作用
- php - 使用 Php 用一个锚标签替换两个/三个单词
- transactions - 托管支付页面交易返回“错误:302”
- javascript - CK Editor(经典编辑器)从父组件更新数据