angular - 如何重用底层控件的验证器?

标签 angular typescript

我没有找到重用底层控件验证器的好方法。例如,我有一个自定义控件,它包含 Material 日期选择器,它有四个验证器:最小值、最大值、过滤器和解析器。自定义控件可以通过添加额外的按钮、时间选择器或其他东西来扩展日期选择器的功能,但很明显,使用原始验证器而不是复制它们会更好。

有人知道好的方法吗?

提前致谢!

最佳答案

我真的不确定你到底想做什么,但验证器最终只是功能。 例如,如果您想在保留旧控件的同时动态地向现有控件添加验证器,您可以这样做:

const fieldControl = myForm.get(fieldPath); // see FormGroup.get(path)
// adding new validator while keeping old ones with fieldControl.validator since setValidators() resets validators
fieldControl.setValidators([validator, fieldControl.validator]);
fieldControl.updateValueAndValidity();

这意味着您可以使用 fieldControl.validator 获取所有验证器,并用它做任何您想做的事情。

关于angular - 如何重用底层控件的验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55025269/

相关文章:

javascript - 从 API Angular 获取图像

javascript - Angular2 - 为什么初始化数组会导致数据结构出现问题?

angular - IONIC 2 构建错误 : "ngc: Error: Error Cannot write file ...[myProject]/.tmp/[some folder]/*.d.ts"

typescript - 绘制多条路径时react-native-canvas的性能优化

javascript - 哪些场景我们要使用构造函数注入(inject)和spyon()注入(inject)?哪一个最好?

angular - 从 Angular 8 的下拉列表中删除/禁用选定的选项(动态创建的)

css - 下拉菜单在整个站点下方弹出,而不是在按钮下方弹出

html - 如果超出可见屏幕,如何找到我的下拉 div?

javascript - 在 NativeScript 应用程序中与 TextField 交互时停止键盘覆盖

javascript - 单元测试未定义不是一个对象(评估 'this.groups.map' )