2

我正在包装角度材质菜单组件。我正在扩展 MatMenuTrigger、MatMenuItem,将它们作为单独的指令并在父组件中使用。在子组件(Menu 组件)中,我仅使用 mat-menu 获取引用,在父组件(Menu-demo 组件)中,将菜单(位于子组件中)附加到我们想要的任何控件。我不应该在子组件中使用按钮标签,所以我使用 ng-content 从父组件获取内容。我只想公开一些属性来获取该引用。我的问题是如何包装这个参考菜单stackblitzlink。请帮我解决这个问题,在此先感谢。

4

1 回答 1

4

菜单指令不是必需的。您可以公开子MatMenu项并将其作为包含组件的属性引用,并直接与MatMenuTrigger指令一起使用:

menu.component.ts:

@Component({
    selector: 'sq-menu',
    templateUrl: './menu.component.html',
})

export class MenuComponent {
   @ViewChild('menu') matMenu: MatMenu;
}

menu.component.html:

<mat-menu #menu="matMenu">
    <ng-content></ng-content>
</mat-menu>

用法:

<button mat-raised-button [matMenuTriggerFor]="menu.matMenu">home</button>
<sq-menu #menu>
    <button mat-button>
        Item1
    </button>
</sq-menu>

StackBlitz

于 2018-09-12T18:00:24.663 回答