如何制作一个材料自定义表单字段控件(像这样的)来支持表单验证,并用mat-error显示它们?我知道常规的matInput指令使用错误StateMatcher(doc),但我不明白如何将其与自定义表单字段链接。
您可以从示例中的焦点监视器
中检查,它可以是这样的:
fm.monitor(elRef.nativeElement, true).subscribe(origin => {
if (this.parts.status === 'INVALID') {
this.errorState = true;
}
this.focused = !!origin;
this.stateChanges.next();
});
这个想法是物质提供errorState
,你可以从组件的类型中看到,所以每当你改变它,它就会反映在组件上,希望它的帮助!
如果您按照官方指南创建自定义材料表单字段,并且在构造函数中声明了ngControl
:
constructor(
...,
@Optional() @Self() public ngControl: NgControl) {
...
if (this.ngControl != null) {
this.ngControl.valueAccessor = this;
}
}
你所需要的是:
get errorState(): boolean {
return this.ngControl.invalid && this.ngControl.dirty;
}
让验证工作开始。
通过查看Material2中的一些现有组件(https://github.com/angular/components/blob/master/src/material/select/select.ts),我找到了解决办法。我按照这个例子创建了一个基类
export const _MatSelectMixinBase:
CanDisableCtor &
HasTabIndexCtor &
CanDisableRippleCtor &
CanUpdateErrorStateCtor &
typeof MatSelectBase =
mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(MatSelectBase))));
我必须从材料回购中复制一些类型,如CanUpdateErrorStateCtor。
然后更新我的构造函数来注入一个错误StateMatcher,最后在ngDocheck中,这样做:
ngDoCheck() {
if (this.ngControl) {
this.updateErrorState();
}
}
我想按照本指南实现一个角度材质自定义表单字段:https://material.angular.io/guide/creating-a-custom-form-field-control 但我一直有这样的错误:错误:mat表单字段必须包含MatFormFieldControl。 根据文件: 如果没有将表单字段控件添加到表单字段,则会出现此错误。如果表单字段包含本机或元素,请确保已向其添加matIn
具有自定义验证的基本HTML5表单。如果提交的值不是数字,浏览器应显示错误消息“字段必须是数字”如果输入“abc”并按submit(或按enter键),该字段将标记为无效,但不会显示错误消息。再次按submit(或按enter)将显示消息。这种双重提交行为出现在Windows和OS X上最新版本的Firefox、Chrome、Safari和IE上。您会注意到默认的“此字段是必需的…”消息在第一次提
我正在使用忍者表单插件在我的WordPress安装。 我的表单有3个输入文本字段。 在按下submit按钮后,我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证其中一个输入。 如果该值不存在,则不会发生任何事情(Ninja Form保存表单),如果它存在,则需要添加一个Ninja Form错误,并让用户更改输入,以便用新的值保存表单。 如何钩住提交操作?我如何才能在这个钩子中得到我需要
问题内容: 这里有一个贪婪的小问题,希望这个问题也可以帮助其他想更多地了解注释验证的人 我目前正在学习Spring,现在,我计划尝试自定义带注释的验证。 我已经进行了很多搜索,现在我知道主要有两种验证,一种用于控制器,另一种是使用@Valid的注释方法 所以这是我的情况:假设我有两个或多个字段,当它们均为ALL NULL时可以为null。但是,只有当这些字段之一包含空字符串以外的任何值时,才要求这
问题内容: 我想自定义弹簧验证错误 但是我做不到。要采取的步骤是什么? 问题答案: 该JSR 303的默认邮件插补算法,您可以通过提供捆绑命名的资源来定制信息。在类路径中创建一个文件,其中包含: 这将更改@Size约束的默认消息,因此您应该使用@Size约束而不是特定于Hibernate的@Length约束。 您可以更改特定约束实例的消息,而不是更改所有约束的默认消息。message在约束上设置属
我试图创建自己的自定义angular material组件,该组件能够使用控件。 除此之外,我希望该控件使用指令。 我的目的只是创建一个更好看的组件,该组件包含一个集成的clear按钮和自定义css箭头,如下图所示。我使用标准组件成功地获得了它,并添加了我想要的内容,但现在我想将它导出到泛型组件中。 null 即使正确选择了值,我的窗体也无效。 选择某个选项后,占位符自身设置不正确。 自动完成筛选