[英]Angular Material: clicking item in mat-sidenav should change content in mat-sidenav-content
[英]Angular Material - Disable mat-sidenav transition animation but keep children animations?
我有一个 Angular 应用程序,它的mat-sidenav
结构如下:
<mat-sidenav-container>
<mat-sidenav [mode]="'side'">
<!-- Sidenav content -->
</mat-sidenav>
<mat-sidenav-content>
<!-- Main content -->
</mat-sidenav-content>
</mat-sidenav-container>
我想为mat-sidenav
禁用过渡 animation 但保留 sidenav 内容的动画(例如mat-vertical-stepper
)。 但是,我还没有找到一种方法来做到这一点。
到目前为止,我发现了这个类似的 GitHub 问题,但那里描述的修复似乎也禁用了 sidenav 内容的动画。 例如,我尝试了以下方法:
<mat-sidenav-container [@.disabled]="true">
<mat-sidenav [mode]="'side'">
<!-- Sidenav content -->
</mat-sidenav>
<mat-sidenav-content>
<!-- Main content -->
</mat-sidenav-content>
</mat-sidenav-container>
这会禁用 sidenav 过渡 animation,但也会禁用所有其他动画。 以下似乎也不起作用:
<mat-sidenav-container [@.disabled]="true">
<mat-sidenav [mode]="'side'" [@.disabled]="false">
<!-- Sidenav content -->
</mat-sidenav>
<mat-sidenav-content [@.disabled]="false">
<!-- Main content -->
</mat-sidenav-content>
</mat-sidenav-container>
我还在Angular 的文档中找到了这篇文章,但它看起来非常复杂,我无法弄清楚如何将它应用于没有自定义动画的组件(如mat-vertical-stepper
)。
有没有什么简单的方法可以禁用mat-sidenav
的转换 animation 同时仍保留其子动画?
这是一种解决方法。 暂时禁用它。
在 HTML 中:
<mat-sidenav-container [@.disabled]="temporaryDisabled">
<mat-sidenav [mode]="'side'" #sidenav>
Sidenav content
</mat-sidenav>
<mat-sidenav-content>
<div class="header">
<button mat-stroke-button (click)="toggle()">toggle sidenav</button>
</div>
<div class="stepper">
<mat-vertical-stepper [linear]="isLinear" #stepper >
(... stepper codes ...)
</mat-vertical-stepper>
</div>
</mat-sidenav-content>
</mat-sidenav-container>
in.ts 文件:
temporaryDisabled: boolean = false;
toggle(){
this.temporaryDisabled = true;
this.sidenav.toggle();
setTimeout(()=>{
this.temporaryDisabled = false;
},10);
}
using Angular module `NoopAnimationsModule`
1 从'@angular/platform-browser/animations'导入导入{NoopAnimationsModule};
2 确保将其添加到 NgModule
@NgModule({
imports: [NoopAnimationsModule]...
})
export class YourMaterialModule { }
要删除某些特定组件上的动画/过渡,您也可以通过 CSS 像这样
.mat-sidenav{ transition: none; }
看看这个disableRipple或这个答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.