如何通过MAT_DIALOG_SCROLL_STRATEGY为项目中所有Angular Material对话框设置滚动策略
全局配置Angular Material对话框的滚动策略
我之前也碰到过和你一模一样的情况——在单个对话框里测试noop滚动策略完全正常,但想全局配置的时候卡壳了,毕竟ScrollStrategyOptions的方法都是实例方法,没法直接通过类去调用。
其实核心是要换用useFactory而非useValue,因为我们需要依赖注入ScrollStrategyOptions的实例,才能调用它的滚动策略方法。下面是正确的全局配置写法:
import { NgModule } from '@angular/core'; import { MAT_DIALOG_SCROLL_STRATEGY } from '@angular/material/dialog'; import { ScrollStrategyOptions } from '@angular/cdk/overlay'; @NgModule({ // ... 你的其他模块配置(比如declarations、imports等) providers: [ { provide: MAT_DIALOG_SCROLL_STRATEGY, useFactory: (scrollStrategyOptions: ScrollStrategyOptions) => { // 这里可以换成你需要的其他滚动策略,比如block()、reposition()等 return scrollStrategyOptions.noop(); }, // 告诉Angular需要注入ScrollStrategyOptions实例来生成这个提供者 deps: [ScrollStrategyOptions] } ] }) export class AppModule { }
这样配置完成后,所有通过MatDialog.open()打开的对话框都会默认使用noop滚动策略,不用再在每个对话框的MatDialogConfig里单独重复设置了。
内容的提问来源于stack exchange,提问作者Thomas Sablik
相关产品推荐
相关产品推荐

