Si te encuentras con alguna parte que te causa duda puedes dejarlo en la sección de comentarios y trataremos de ayudarte lo mas rápido que podamos.
Solución:
Bueno, si quieres hacer algo como esto:
puedes codificar
Me gusta esto:
import Component,Input from '@angular/core';
import MatMenu from '@angular/material';
@Component(
selector: 'other-component',
template: `
This button is in another component:
`,
)
export class OtherComponent
@Input() matMenu: MatMenu;
Puede ver el ejemplo anterior funcionando en esta demostración de stackblitz.
Otro enfoque
Otro enfoque es (creo que esto es lo que quieres): tu botón de disparo es dentro del padre (pero fuera del niño) y el menú en sí mismo se define dentro del niño componente.
Componente principal:
export class ParentComponent
@ViewChild(ChildComponent) childComponentMenu: ChildComponent;
Componente hijo:
@Component(
selector: 'child-component',
template: `
`,
)
export class ChildComponent
@ViewChild(MatMenu, static: true) menu: MatMenu;
Otro enfoque más
Otro enfoque, similar al anterior, pero utilizando variables de referencia de plantilla (observe el exportAs
en el decorador del componente hijo):
Componente principal:
export class ParentComponent
Componente hijo:
@Component(
selector: 'child-component',
template: `
`,
exportAs: 'menuInOtherComponent',
)
export class ChildComponent
@ViewChild(MatMenu, static: true) menu: MatMenu;
Demostración de stackblitz
Aquí hay otra solución usando ng-content
. Esa es mi forma preferida de ir.
mi-menú-personalizado-componente html:
menu content
componente principal html:
Finalizando este artículo puedes encontrar las notas de otros gestores de proyectos, tú además puedes mostrar el tuyo si lo crees conveniente.