anuglar 5 материал мат-сиденав анимация не работает при закрытии
У меня странная проблема с анимацией при закрытии материала navbar (). Анимация работает нормально, когда я открываю панель навигации, но когда я закрываю ее, анимация, чтобы закрыть ее, кажется, не воспроизводится. Вместо этого он просто рассеивается, когда "время анимации" истекло. Однако анимация закрытия работает, когда кто-либо открывает панель навигации, а до ее закрытия закрывает ее. Столь быстрое переключение между открытием и закрытием до завершения анимации / перехода делает его работу ожидаемой. Это выглядит примерно так:
анимация не работает при закрытии
Это должно работать так:
https://stackblitz.com/angular/perxaynqger?file=app%2Fsidenav-responsive-example.ts
СМОТРЕТЬ НИЖЕ ДЛЯ КОДА
app.module.ts
// ANGULAR MODULES
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms'; // <-- NgModel lives here
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {
MatAutocompleteModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatChipsModule,
MatDatepickerModule,
MatDialogModule,
MatExpansionModule,
MatGridListModule,
MatIconModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSidenavModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatSortModule,
MatTableModule,
MatTabsModule,
MatToolbarModule,
MatTooltipModule,
MatStepperModule,
} from '@angular/material';
import {CdkTableModule} from '@angular/cdk/table';
// COMPOENTS AND SERVICES
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { AboutMeComponent } from './components/about-me/about-me.component';
import { HomeComponent } from './components/home/home.component';
import { ProjectsComponent } from './components/projects/projects.component';
import { WhyMeComponent } from './components/why-me/why-me.component';
// MATERIAL MODULE
@NgModule({
exports: [
CdkTableModule,
MatAutocompleteModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatChipsModule,
MatStepperModule,
MatDatepickerModule,
MatDialogModule,
MatExpansionModule,
MatGridListModule,
MatIconModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSidenavModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatSortModule,
MatTableModule,
MatTabsModule,
MatToolbarModule,
MatTooltipModule,
]
})
export class MaterialModule {}
@NgModule({
declarations: [
AppComponent,
AboutMeComponent,
HomeComponent,
ProjectsComponent,
WhyMeComponent
],
imports: [
BrowserModule,
FormsModule,
AppRoutingModule,
BrowserAnimationsModule,
MaterialModule
],
exports: [],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component.ts
import { Component, NgModule, EventEmitter, ChangeDetectorRef } from '@angular/core';
import { MatIcon, MatIconButtonCssMatStyler, MatIconBase, MatIconModule } from '@angular/material';
import { AnimationEvent, trigger, state, style, group, } from '@angular/animations';
import { animate, transition, keyframes, stagger, query} from '@angular/animations';
import { MediaMatcher } from '@angular/cdk/layout';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
})
export class AppComponent {
mobileQuery: MediaQueryList;
private _mobileQueryListener: () => void;
constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher) {
this.mobileQuery = media.matchMedia('(max-width: 600px)');
this._mobileQueryListener = () => changeDetectorRef.detectChanges();
this.mobileQuery.addListener(this._mobileQueryListener);
}
}
app.comonent.html
<div class="example-container">
<mat-toolbar color="primary" class="example-toolbar">
<button mat-icon-button class="menu-icon" (click)="snav.toggle()">
<mat-icon>menu</mat-icon>
</button>
<h1 class="app-name">Portfolio - v2</h1>
</mat-toolbar>
<mat-sidenav-container class="sidenav-container">
<mat-sidenav #snav [mode]="'side'">
<mat-nav-list>
<!--<a mat-list-item routerLink="." *ngFor="let nav of fillerNav">{{nav}}</a>-->
<a mat-list-item routerLink="/home">Home</a>
<a mat-list-item routerLink="/about-me">About me</a>
<a mat-list-item routerLink="/projects">Projects</a>
</mat-nav-list>
</mat-sidenav>
<mat-sidenav-content>
<main>
<router-outlet></router-outlet>
</main>
</mat-sidenav-content>
</mat-sidenav-container>
</div>