[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
当在视图中创建与表单控件关联的指令时,将触发验证器。
视图更改时不应模型。
https://stackblitz.com/edit/angular-reactive-forms-issue?file=app/app.component.ts
请注意错误消息现已消失的事实。 切换视图是在模拟具有多部分形式的用例。
如果这是设计使然,我看不出有什么原因。 我们正在创建一个视图,我们在其中编写要查看的数据表单模型。 据我所知,从模型中读取的操作不应触发验证器。 在我看来,当在模型中创建FormControl
实例时,应该运行验证器。 _当值没有改变时,为什么会触发验证器?_
<br i="34"/>
Angular version: 4.3.6<br i="35"/>
<!-- Check whether this is still an issue in the most recent Angular version -->
是的,听起来不错。
视图中的更改不应影响响应式形式的模型,模型上的任何更改不应触发验证。
它总是运行一个新的验证运行( updateValueAndValidity()
),而只有在控制指令引入了新的验证器时才应该这样做。
此外,将函数重命名为addControlDirective()
可能会减少对其正在执行的操作的混淆。
可能与 #14376 有某种关系,它既是关于在反应式表单上编辑视图,又看起来FormGroupDirective
有问题。
最有用的评论
是的,听起来不错。
视图中的更改不应影响响应式形式的模型,模型上的任何更改不应触发验证。
我已将其指向https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104
它总是运行一个新的验证运行(
updateValueAndValidity()
),而只有在控制指令引入了新的验证器时才应该这样做。此外,将函数重命名为
addControlDirective()
可能会减少对其正在执行的操作的混淆。可能与 #14376 有某种关系,它既是关于在反应式表单上编辑视图,又看起来
FormGroupDirective
有问题。