- By itself mat-menu does not render anything
- It has to be triggered from UI element or programatically
- Documentation : https://material.angular.io/components/menu/api
material.module.ts (add a new module)
import { NgModule } from '@angular/core';
import { MatButtonModule } from '@angular/material';
import { MatProgressSpinnerModule} from '@angular/material/progress-spinner';
import { MatBadgeModule } from '@angular/material/badge';
import { MatButtonToggleModule} from '@angular/material/button-toggle';
import { MatIconModule} from '@angular/material/icon';
import { MatToolbarModule} from '@angular/material/toolbar';
import { MatSidenavModule} from '@angular/material/sidenav';
import { MatMenuModule} from '@angular/material/menu';
const MaterialComponent = [
MatButtonModule,
MatButtonToggleModule,
MatIconModule,
MatBadgeModule,
MatProgressSpinnerModule,
MatToolbarModule,
MatSidenavModule,
MatMenuModule
];
@NgModule({
imports: [
MaterialComponent,
],
exports: [
MaterialComponent
]
})
export class MaterialModule { }
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MaterialModule } from './material/material.module';
import { FormsModule } from '@angular/forms';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
MaterialModule,
FormsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component.html
<mat-menu #appMenu="matMenu" xPosition="after" yPosition="above">
<button mat-menu-item [matMenuTriggerFor]="subMenu">FrontEnd</button>
<button mat-menu-item>BackEnd</button>
</mat-menu>
<button class="center" mat-flat-button [matMenuTriggerFor]="appMenu">Menu</button>
<mat-menu #subMenu="matMenu">
<button mat-menu-item>Angular</button>
<button mat-menu-item>React</button>
<button mat-menu-item>Vue</button>
</mat-menu>
<mat-menu #lazyMenu="matMenu">
<ng-template matMenuContent let-name="name" let-hobby="hobby">
<button mat-menu-item>Setting</button>
<button mat-menu-item>Hobby is {{hobby}}</button>
<button mat-menu-item>Logout {{name}}</button>
</ng-template>
</mat-menu>
<button
[matMenuTriggerFor]="lazyMenu"
[matMenuTriggerData]="{name : 'Tyson', hobby: 'Gaming'}"
mat-raised-button> Tyson</button>
<button
[matMenuTriggerFor]="lazyMenu"
[matMenuTriggerData]="{name : 'Heapwizard', hobby: 'Blogging'}"
mat-raised-button>HeapWizard</button>
app.component.css
.center{
margin: 10rem;
}
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
opened = false;
title = 'GettingStarted';
log(state){
console.log(state);
}
}
Output :
