You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:48:12