Búsqueda de sitios web

typescript - Envolviendo el Componente de Menú de Angular Material 6


Estoy envolviendo el componente de menú de Angular Material. Estoy extendiendo MatMenuTrigger, MatMenuItem, convirtiéndolos en directivas separadas y usándolos en el componente padre. En el componente hijo (componente de menú), solo estoy usando mat-menu para obtener la referencia y en el componente padre (componente Menu-demo), adjunto el menú (que está en el componente hijo) al control que queramos. No debo usar la etiqueta button dentro del componente hijo, así que usé ng-content para obtener el contenido del padre. Solo quiero exponer algunas propiedades para obtener esa referencia. Aquí está mi pregunta: ¿cómo envolver este menú por referencia, stackblitzlink? Por favor ayúdame con esto, gracias de antemano.

Respuesta #1

La directiva de menú no es necesaria. Puedes exponer el MatMenu hijo y referenciarlo como una propiedad del componente contenedor y usarlo directamente con la directiva 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>

Uso :

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

StackBlitz

Artículos relacionados