コンポーネント間の変化の検出とデータの流れに関してAngular2(最終)に問題があります。私はそれの周りに働いているが、私に少しハッキーのように思われる それを行うより良い方法があるかどうか疑問に思っていた。角度2の変化の検出「式がチェックされた後に変化しました」
基本的に私はすべてのコンポーネントCの子コンポーネントC.
の数を作成し、子コンポーネントBとも* ngForを持っている成分Aを持って、親コンポーネントで処理され定義された@Output
がありますコンポーネントBの@Input
として使用されるコンポーネントAの別のプロパティが決定されます。
コンポーネントモードでは、コンポーネントCの@Output
がトリガされるたびに、私はコンソールの下でエラーの下になっています:
Expression has changed after it was checked. Previous value: XX. Current value: XX.
これについては、Angular2の単方向データの流れが原因で予想されます。私は自分のシナリオで正しく動作させる方法を知りましたか?
Iを一時的成分AにChangeDetectorRef
を注入し、私はその非常に効率的ではないカントーその心配C. のインスタンスから@Output
イベントを処理する関数でそのdetectChanges()
メソッドを呼び出します。私はおそらくそれを改善しようとし、最後のアイテムのイベント(すべてのCコンポーネントが同時にそのイベントを送信する)後にそれを呼び出すことができますが、私はイベントの非同期の性質といくつかの予期しない動作を心配します。
誰もこの問題を解決する方法を知っていますか?私のデザインは、コンポーネント間のデータフローに関して根本的に欠陥がありますか? データを交換する代わりに共有サービスのようなものを使うべきでしょうか?
ご迷惑をおかけして申し訳ございません。
変更検出の実行によってモデルが変更されると、エラーがスローされます。たとえば、変更検出によって呼び出される 'ngOnChanges()'でモデルを変更する場合です。原因を追跡するために、より多くのコードを参照する必要があります。多くの場合、呼び出されるたびに新しいオブジェクトインスタンスを返す関数がバインドされているときに発生します。 –
@GünterZöchbauerそれは何か起こるものです。コンポーネントCのすべてのインスタンスは、イベントを発行し、親コンポーネントAのモデル変更をもたらすngOnChanges()を持っています。 – Zyga