[ ] 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
があるように見えます。