2016-12-12 6 views
0

複雑なネストされたフォームを動的に生成しようとしていますが、動作させることができません。角2動的なフォームの変更により、 "式が変更されました"という例外が発生する

結果はこれと同様のものになるだろう: Mock of desired result

ユーザーはそれがあるファイルの種類のファイル、説明を選択して、必要なメタデータを満たさなければなりません。 その後、彼はファイルを提出できます。

問題は、フォームを動的に生成すると、「式がチェックされた後に式が変更されました。」前の値:「true」。現在の値:「false」。

私はこのように、私は、フォームを構築する部分に変化検出を強制しようとしている:

this.metadataForm = this.docMetService.toFormGroup(this.metadataDefinitions); 
this.changesDetector.markForCheck(); 

しかし、エラーがまだ発生します。

助けが必要ですか? ありがとうございました

+0

'markForCheck'ではなく' detectChanges'メソッドを試しましたか? – yurzui

答えて

0

私は推測させてください。 コントロールの有効なプロパティへのアクセスは、妥当性を変更するフォーム部分をロードしていない可能性があるため、最初は有効です。

「確認した後に表現が変わった」とは、角度の目の外に何かがあることを意味します。

これを修正するには、テンプレートからその妥当性チェックを削除し、すべてが正常であることをテストしてみてください。

次に、すべてのダイナミックフォームブロックを作成するmainメソッドをsetTimeout(cdを実行するのに役立つ)に入れ、最後にcd.detectChangesを実行します。

+0

それは、いくつかの問題を処理した後、テンプレートにプロパティをバインドしないことにしました。 –

関連する問題