Angular 材质 6 的环绕菜单组件

Shr*_*i G 3 typescript angular-directive angular6 angular-material-6

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

G. *_*ter 6

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

菜单.组件.ts:

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

export class MenuComponent {
   @ViewChild('menu') matMenu: MatMenu;
}
Run Code Online (Sandbox Code Playgroud)

菜单.组件.html:

<mat-menu #menu="matMenu">
    <ng-content></ng-content>
</mat-menu>
Run Code Online (Sandbox Code Playgroud)

用法:

<button mat-raised-button [matMenuTriggerFor]="menu.matMenu">home</button>
<sq-menu #menu>
    <button mat-button>
        Item1
    </button>
</sq-menu>
Run Code Online (Sandbox Code Playgroud)

堆栈闪电战