角度2で、より高い親コンポーネント(直接の親ではない)を子に注入します

ドラウ

直接の親ではない親コンポーネントを注入する必要があります。

@Host() デコレータでは、直接の親コンポーネントのみを挿入できます。

実際の例-メニューおよびメニュー項目コンポーネント。ページにメニューを配置したい

<menu [name]="'smth'">
  <auth-logout></auth-logout>
  <!-- ... other menu items -->
</menu>

nameinputは、メニューサービスを介してメニューのアクション(トグルなど)を呼び出します。すべてのメニュー項目の子コンポーネントには、menu-itemコンポーネントを含めることができます

<menu-item (itemClick)="logout()">
  LOGOUT
</menu-item>

およびmenu-itemテンプレート

<div class="menu-item"    
     (click)="onClick()">
  <ng-content></ng-content>
</div>

plnkr http://plnkr.co/edit/ArQZYZsHQgn6I2eK3AZd

クリックイベントでメソッドを呼び出すためにmenuコンポーネントを挿入したいと思います。このメニューとコンポーネントの相互作用については何も知らないはずであり、各メニュー項目でクローズロジックを複製したくありません。menu-itemclose()menu-itemauth-logout

そのように包んでみませんか?

<menu>
  <menu-item>
    <auth-logout></auth-logout>
  </menu-item>
</menu>

のでmenu-itemブロックは、いくつかのスタイルを持っている子コンポーネント(EXパディング)と、それはクリックで自動的に閉じ、メニューには難しいの休憩適切クリックすると(のような各構成要素にメニュー名を渡すために必要であることauth-logoutや、このコンポーネントに出力を追加します)

からのサービスコールを利用しないのはなぜmenu-itemですか?メニュー名を各メニュー項目(のようなauth-logoutからに渡す必要があるためですmenu-itemが、のようなコンポーネントauth-logoutは、この相互作用やメニュー名などについて何も知らないはずです。

もう1つの例-リスト変更イベント(リストコンポーネントのサブジェクト)をリッスンし、emitでいくつかの処理を実行するアイテムサブコンポーネントを含むアイテムリスト(例:src新しいタイムスタンプパラメータを追加してキャッシュをリセットし、画像を更新することによるアイテム画像の更新)。コンポーネントのネストが深いため、サービスを介して対話するためにリスト名を渡すのは複雑すぎます(ページ上のリストが異なるため、名前が必要です)

このケースはrequire、コンポーネントに上位レベルの親を挿入できるプロパティを持つng1でうまく機能します

更新:

上記の例@Host()private、コンストラクターinject(thx @yurzui)で欠落しているものを削除および追加することで修正できますしかし、実際の問題はもっと複雑であり、この解決策は役に立ちません。ここに更新されたplnkrがあります。http://plnkr.co/edit/p7Vd4FRpHPRtyEuL6pEZ

違いはheader-menu、このテンプレートを持つ追加コンポーネントです

<menu>
  <ng-content></ng-content>
</menu>

またmenumenu-itemコンポーネントへの注入は、このコンポーネントのネストでは機能しません

header-menu
  menu
    auth-logout
      menu-item

更新/回答:header-menuこの問題の最終的なケースはgithub.com/angular/angular/issues/5126であり、これはまだサポートされていません。

ゆるずい

@Host()デコレータを削除するだけで、忘れないでくださいprivateそれ以外の場合this.menuComponentは、常に変更undefinedなしになりprivateます。

constructor (@Optional() private menuComponent: MenuComponent)

プランカーの例

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

角度2の子コンポーネントで親コンポーネントの名前を取得するにはどうすればよいですか?

分類Dev

角度2で子から親コンポーネントに値を渡すにはどうすればよいですか?

分類Dev

子コンポーネントと親コンポーネントの状態を正しく設定するにはどうすればよいですか?

分類Dev

親の状態を子コンポーネントに渡すにはどうすればよいですか?

分類Dev

子コンポーネントの状態を親に渡すにはどうすればよいですか?

分類Dev

textareaの親コンポーネントがあります@inputを使用して子コンポーネントのtextareaの高さを変更したい

分類Dev

コンポーネントの親の親を取得するにはどうすればよいですか?

分類Dev

親コンポーネントで子コンポーネントの状態を使用するにはどうすればよいですか?

分類Dev

親の子コンポーネントをHOCでラップし、Reactでレンダリングするにはどうすればよいですか?

分類Dev

親コンポーネントをその子コンポーネントのラベルにするにはどうすればよいですか?

分類Dev

QMLで、子コンポーネントインスタンスを取得し、それらを親コンポーネント階層に配置する親コンポーネントを作成するにはどうすればよいですか?

分類Dev

変数の値を子コンポーネントから親コンポーネントに送信するにはどうすればよいですか?

分類Dev

javaFX 2.0は、直接の親の全幅と高さにコンポーネントを設定します

分類Dev

親コンポーネントから子コンポーネントの小道具の値を更新するにはどうすればよいですか?

分類Dev

子コンポーネントの親コンポーネントのnavigationOptionsを変更するにはどうすればよいですか?

分類Dev

子コンポーネントの小道具が親コンポーネントの初期値のみを表示しているのはなぜですか?

分類Dev

Angular2:親コンポーネントで子供にどのサイズにするかを指示するにはどうすればよいですか?

分類Dev

親コンポーネントの状態を子コンポーネントから変更するにはどうすればよいですか?

分類Dev

親コンポーネントから子コンポーネントのメソッドを呼び出すにはどうすればよいですか?

分類Dev

親コンポーネントの子コンポーネントからngModelを使用するにはどうすればよいですか?

分類Dev

子コンポーネントが親コンポーネントを介してフィルタリングされるときに子コンポーネントの状態を維持するにはどうすればよいですか?

分類Dev

2つのコンポーネント間で通信します(子-親とは関係ありません)

分類Dev

小道具を介して親から送信した子コンポーネントのデータを更新するにはどうすればよいですか

分類Dev

反応:子コンポーネント(クラスコンポーネントではなく関数コンポーネント)の状態を親から変更するにはどうすればよいですか?

分類Dev

Reactで子コンポーネントを親コンポーネントに条件付きで追加するにはどうすればよいですか?

分類Dev

このコンポーネントを作成して、その値を親コンポーネントに渡すにはどうすればよいですか?

分類Dev

reactjsで1つのコンポーネント(子コンポーネント)から別のコンポーネント(親コンポーネント)に値を取得するにはどうすればよいですか?

分類Dev

vueコンポーネントの子コンポーネントをクリックしたときに、親コンポーネントのデータを更新するにはどうすればよいですか?

分類Dev

Angularで親コンポーネントから子コンポーネントにデータを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    角度2の子コンポーネントで親コンポーネントの名前を取得するにはどうすればよいですか?

  2. 2

    角度2で子から親コンポーネントに値を渡すにはどうすればよいですか?

  3. 3

    子コンポーネントと親コンポーネントの状態を正しく設定するにはどうすればよいですか?

  4. 4

    親の状態を子コンポーネントに渡すにはどうすればよいですか?

  5. 5

    子コンポーネントの状態を親に渡すにはどうすればよいですか?

  6. 6

    textareaの親コンポーネントがあります@inputを使用して子コンポーネントのtextareaの高さを変更したい

  7. 7

    コンポーネントの親の親を取得するにはどうすればよいですか?

  8. 8

    親コンポーネントで子コンポーネントの状態を使用するにはどうすればよいですか?

  9. 9

    親の子コンポーネントをHOCでラップし、Reactでレンダリングするにはどうすればよいですか?

  10. 10

    親コンポーネントをその子コンポーネントのラベルにするにはどうすればよいですか?

  11. 11

    QMLで、子コンポーネントインスタンスを取得し、それらを親コンポーネント階層に配置する親コンポーネントを作成するにはどうすればよいですか?

  12. 12

    変数の値を子コンポーネントから親コンポーネントに送信するにはどうすればよいですか?

  13. 13

    javaFX 2.0は、直接の親の全幅と高さにコンポーネントを設定します

  14. 14

    親コンポーネントから子コンポーネントの小道具の値を更新するにはどうすればよいですか?

  15. 15

    子コンポーネントの親コンポーネントのnavigationOptionsを変更するにはどうすればよいですか?

  16. 16

    子コンポーネントの小道具が親コンポーネントの初期値のみを表示しているのはなぜですか?

  17. 17

    Angular2:親コンポーネントで子供にどのサイズにするかを指示するにはどうすればよいですか?

  18. 18

    親コンポーネントの状態を子コンポーネントから変更するにはどうすればよいですか?

  19. 19

    親コンポーネントから子コンポーネントのメソッドを呼び出すにはどうすればよいですか?

  20. 20

    親コンポーネントの子コンポーネントからngModelを使用するにはどうすればよいですか?

  21. 21

    子コンポーネントが親コンポーネントを介してフィルタリングされるときに子コンポーネントの状態を維持するにはどうすればよいですか?

  22. 22

    2つのコンポーネント間で通信します(子-親とは関係ありません)

  23. 23

    小道具を介して親から送信した子コンポーネントのデータを更新するにはどうすればよいですか

  24. 24

    反応:子コンポーネント(クラスコンポーネントではなく関数コンポーネント)の状態を親から変更するにはどうすればよいですか?

  25. 25

    Reactで子コンポーネントを親コンポーネントに条件付きで追加するにはどうすればよいですか?

  26. 26

    このコンポーネントを作成して、その値を親コンポーネントに渡すにはどうすればよいですか?

  27. 27

    reactjsで1つのコンポーネント(子コンポーネント)から別のコンポーネント(親コンポーネント)に値を取得するにはどうすればよいですか?

  28. 28

    vueコンポーネントの子コンポーネントをクリックしたときに、親コンポーネントのデータを更新するにはどうすればよいですか?

  29. 29

    Angularで親コンポーネントから子コンポーネントにデータを取得するにはどうすればよいですか?

ホットタグ

アーカイブ