この問題を解消するために、特に直近の回答はありませんでした。特に、リリースされた2.xバージョンのAngularに関しては苦労しました。Angular2:ルータによって動的に挿入されたスタイリングコンポーネント
を使用すると、次のコードでapp.component.html
があるとします。
<div>
<router-outlet></router-outlet>
</div>
ルータが動的にカスタムコンポーネントを挿入し、my-component
と(不思議なことを)言うので、のようなrouter-outlet
要素の兄弟としてそのコンポーネントを配置します
<div>
<router-outlet></router-outlet>
<my-component></my-component>
</div>
明らかに、ルータは別のコンポーネントをそこに置くことができます。したがって、ファイルにスタイルを作成するときには、名前に頼ってmy-component
にすることはできません。
だから...どうすればいいですか?
これはなぜ重要ですか?my-component
CSSの:host
にスタイルを設定するだけではどうですか?まあ、すべてのスタイルがそこに属しているわけではないから。たとえば、app.componentがフレックスコンテナ(つまり、display: flex;
)であると判断した場合、my-component
要素はフレックスアイテム(つまり、flex: 1 0 0;
)のスタイルにする必要があります。 my-component
の中にフレックスアイテムスタイルを配置することは、親コンポーネントのスタイルと組み合わせているため、悪い習慣のように思えます。
あなたが答えを知っているならばチャイム。
ありがとうございます!
私は幸運にも似たような試みをしましたが、最も近い解決策は、親データにサービスに必要なデータをプッシュし、それを観察してホストデータを更新させることでした。明らかに理想的ではありませんが、私が知っている限り、親からルータアウトレットを通して子コンポーネントにデータを渡すことはできません。 –