【发布时间】:2017-07-12 17:01:43
【问题描述】:
我想用多个验证器验证一个字段。
使用模块驱动方法,代码如下所示:
this.exampleForm = this.fb.group({
date_start : [
'',
Validators.compose([
Validators.required,
Validators.pattern("[0-9]{2}-[0-9]{2}-[0-9]{4}")
])]
})
但我也可以在没有 Validators.compose() 的情况下编写此代码,例如:
this.exampleForm = this.fb.group({
date_start : [
'',
[
Validators.required,
Validators.pattern("[0-9]{2}-[0-9]{2}-[0-9]{4}")
]
]
})
而且效果很好。我个人更喜欢第二个版本(没有compose),更少的代码和更好的可读性。这就引出了一个问题,我为什么要使用 Validators.compose()?
【问题讨论】:
-
我猜这主要是出于历史原因。
-
呵呵,我猜... 到目前为止,我发现这种历史方法无处不在(视频、博客...),这真的很奇怪,然后突然在 Angular Cookbook 上我发现我不需要它。
-
Forms 模块在 2016 年 7 月/8 月进行了一次大改造,并删除了
compose()的要求,但我猜他们保留它是为了避免不必要地破坏现有代码并让用户感到困惑。 -
哦,我想它可能是这样的。好吧,谢谢你的信息。 :)
-
嗯...仍然需要在 FormArray 上添加 multiple validators (因为它的构造函数只接受单个
ValidatorFn而不是 @987654326 @. 只有当他们合并这个pull request时才需要。
标签: angular angular2-forms angular2-formbuilder