2017-05-10 5 views
2

私はReactive Formsを多くのコンポーネントにわたって共有しようとしていますが、ルーティング経由でそれを達成しようとしているときに問題に遭遇しています。エラー私は受けています:ここで をルータコンセント 『は、既知のプロパティではありませんので、『グループ「にバインドできません』』Reactive Formsグループをルータアウトレットに渡す

はルータです:

<router-outlet [group]="turnoverService.turnoverForm"></router-outlet>

ルーティングを使用してリアクティブフォームを子コンポーネントに渡す方法はありますか?

答えて

0

角型([])のバインディング構文を使用すると、コンポーネントにバインドと同じ名前の@Inputプロパティがある場合にのみ機能します。 router-outletsこれはありません。さらに、ルーティングされたコンポーネントは、子ではなく<router-outlet>に兄弟として追加されます。

最も簡単な方法(およびベストプラクティスIMO)は、子コンポーネントに注入されるデータを持つ共有サービスを使用することです。 turnoverServiceがあるように見えるので、子コンポーネントはコンストラクタでこれを取得する必要があります。

さらに詳しい情報:Passing data into "router-outlet" child components (angular 2)

EDIT:これを実行する別の方法は、ルートの定義そのものにresolve方法を使用することです。 resolve機能は、ルートがアクティブになったときに起動しますが、resolve関数が正常に完了するまで、ルート自体は実際にはロードされません。ルーティングされたコンポーネントはInjectorを介してresolveのデータにアクセスできます。これは、既にデータを持っているか、それを取得するために何らかのロジックを行う必要がある場合には役に立ちますが、resolveメソッドが非同期AJAX呼び出しを行っている場合はおそらく最良の解決策ではありません。

resolveの詳細は、この優れたarticleにあります(角度のドキュメント自体はここにはありません)。

関連する問題