【问题标题】:Reactive Forms : Pattern Validation not working in child component反应形式:模式验证在子组件中不起作用
【发布时间】:2019-06-03 06:00:27
【问题描述】:

在上面的示例中,我有一个带有嵌套表单组的反应式表单。地址表单子组件用于嵌套表单组。验证正在父组件中完成。除了模式验证外,一切似乎都在工作。所需的验证工作正常,但模式验证不起作用。

我使用了 validators.compose 将所需的验证和模式验证结合在一起。我在这里做错了什么吗?

【问题讨论】:

  • 你的演示适合我。当我输入 2222222222222222 时,它接受。如果不是这样,它会失败并显示消息“地址应遵循模式”。顺便说一句,“必需”和模式验证器都可以在我的 Chrome 浏览器中使用。那么,又是什么问题呢?
  • 我只是想我会收到两个错误消息..这种模式是否接受空字符串?..对不起,如果这是蹩脚的,我是新手
  • 您是否对 Stackblitz 示例中的某些内容进行了更改?
  • 是的,我删除了所需的验证
  • 将 formGroup 传递给子组件是一种不好的做法,因为您让子组件访问的对象超出了应有的范围。我已经在stackoverflow.com/a/56375605/2398593 上发表了完整的帖子,你也应该检查github.com/cloudnc/ngx-sub-form

标签: angular angular-reactive-forms reactive-forms


【解决方案1】:

至于我,你的验证模式,输入:1234567890123456。 你想验证什么样的信息?) 您也可以将其替换为

address1: ['',Validators.pattern('^\\d{16}$')]

【讨论】:

  • 此模式是否接受空字符串?我尝试删除所需的验证,但模式验证没有触发
  • 当你开始输入时触发)
  • 这种模式 '^\\d{16}$' 与 OP 的正则表达式有何不同?两者看起来都一样。 IMO,这也回答了这个问题。可以?根据源 github.com/jquerytools/jquerytools/issues/605,模式验证器不适用于空字段。
  • 感谢您的帮助..您能否建议我如何将验证器移动到子组件?
  • easy) 您可以使用@Input 将 formControl 传递给子组件。很好的例子:medium.com/@joshblf/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多