2016-12-24 10 views
4

私はプログラム的に2番目のメニューコンポーネントを切り替える方法複数のメニューがある場合、メニューをプログラムで切り替えますか?

<button md-icon-button [md-menu-trigger-for]="menu"> 
    <md-icon>more_vert</md-icon> 
</button> 
<md-menu #menu="mdMenu"> 
    <button md-menu-item>Refresh</button> 
    <button md-menu-item>Settings</button> 
    <button md-menu-item>Help</button> 
    <button md-menu-item disabled>Sign Out</button> 
</md-menu> 

<button md-icon-button [md-menu-trigger-for]="menu1"> 
    <md-icon>more_vert</md-icon> 
</button> 
<md-menu #menu1="mdMenu"> 
    <button md-menu-item>Refresh</button> 
    <button md-menu-item>Settings</button> 
    <button md-menu-item>Help</button> 
    <button md-menu-item disabled>Sign Out</button> 
</md-menu> 

以下のように私のテンプレートで2メニューコンポーネントを過ごしていた場合は?。 通常、@ViewChild(MdMenuTrigger)では、テンプレートにメニューコンポーネントが1つしかない場合は、以下を使用できます。 @ViewChildにコンポーネント名を指定して、n番目のメニューコンポーネントを見つけ、プログラムでメニューを開くことによって、何らかの方法がありますか?

答えて

1

まず、あなたのコンポーネントに

class YourComponent implements AfterViewInit {

AfterViewInitをフックする必要があり、あなたは@ViewChildren

@ViewChildren(MdMenuTrigger) triggers: QueryList<MdMenuTrigger>; 
// use ViewChildren to get a list of menu element 

ngAfterViewInit() { 

    // inside ngAfterViewInit lifecycle 
    // you get the triggers 

    this.triggers.forEach((item)=>{ 
    item.openMenu(); 
    }); 

} 
+2

を使用してあなたが名前を使用して特定のメニューにアクセスできることを行うことができます[md-menu-trigger-for] = "menu2"#trial = "mdMenuTrigger" Agnualarの資料にある問題を参照してください。https://github.com/angular/material2/issues/2421 –

+0

誰でも説明してください。 '#trial =" mdMenuTrigger "行はどういう意味ですか? –

関連する問題