我可以有条件地实现Angular 2反应形式的验证 . 我有这个带有3个formControl字段的反应形式,一个是选择,另外两个是名字和姓氏的输入文本 . 我想根据第一个字段“validateBy”的选择有条件地实现firstname和lastname的验证 . 如果用户选择'byFirstName',则只应验证firstName . 如果用户选择'byLastName',则只应验证lastName . 如果用户选择'byBoth',则应验证firstName和lastName . 我为此创造了一个plunker . 只有两个验证工作 .
ngOnInit() {
this.myForm = this._fb.group({
validateBy: ['byFirstName'],
firstName: ['', isFirstNameValid(() => (this.validateBy === 'byFirstName' || this.validateBy === 'byBoth'),
Validators.required)],
lastName: ['', isLastNameValid(() => (this.validateBy === 'byLastName' || this.validateBy === 'byBoth'),
Validators.required)],
});
2 回答
问题是您的代码只计算一次表达式 - 创建
FormGroup
时 . 您需要通过创建自定义验证器使其动态化,该验证器将在每次调用时评估表达式:另一种方法是这样的 . 似乎工作plunker