1. ホーム
  2. angular

[解決済み] Angular 2の無効化されたコントロールがform.valueに含まれない

2022-04-24 09:59:03

質問

Angular 2のリアクティブフォームでコントロールを無効にすると、そのコントロールはform.valueに含まれないことに気づきました。 例えば、以下のようにフォームを定義した場合。

this.notelinkingForm = new FormGroup({
    Enabled: new FormControl(settings.Enabled, Validators.required),
    LinkToPreceeding: new FormControl({value: settings.LinkToPreceeding, disabled: !settings.Enabled}, Validators.required),
    LinkingTolerance: new FormControl({value: settings.LinkingTolerance, disabled: !settings.Enabled}, Validators.required)
});

で、this.notelinkingForm.valueをチェックし、すべてのコントロールが有効であれば、出力は次のようになります。

{"Enabled":true, "LinkToPreceeding": true, LinkingTolerance:"100"} 

しかし、一部のコントロールを無効にすると、そうなってしまいます。

{"Enabled":true} 

無効化されたコントロールがどのように除外されているかに注目してください。

私の意図は、フォームが変更されたときに、その中のすべてのプロパティを含む form.value をレスト API に渡すことができるようにすることです。 これは、無効にされた項目を含んでいない場合、明らかに不可能です。

私はここで何かを見逃していますか、それともこれは期待される動作ですか? 無効な項目をform.valueに含めるようにAngularに指示する方法はありますか?

あなたの考えを歓迎します。

解決方法は?

使用することができます。

this.notelinkingForm.getRawValue()

から Angularドキュメント :

無効の状態にかかわらず、すべての値を含めたい場合は、この方法を使用します。そうでない場合は value プロパティは、グループの値を取得するための最良の方法です。