MatDialog 错误:没有 InjectionToken mat-dialog-scroll-strategy 的提供程序

问题描述 投票:0回答:4

通过在构造器中包含提供者:MatDialog

constructor(groupService: GroupService, public dialog: MatDialog) {}

我在运行时遇到以下错误

错误:没有 InjectionToken mat-dialog-scroll-strategy 的提供程序!

我已将 Matdialog 包含在“app.module.ts”中 我是否需要一个不同的提供商,是哪一个?我使用角度材料 2.0.0b12

angular-material2
4个回答
62
投票

您需要在导入中包含 MatDialog 模块。

import {MatDialogModule} from '@angular/material';
@NgModule({
   imports :[MatDialogModule],
   ...
})

编辑2022年

您需要在导入中包含 MatDialog 模块。

import {MatDialogModule} from '@angular/material/dialog';
@NgModule({
   imports :[MatDialogModule],
   ...
})

8
投票

如果您尝试使用

@Injectable({providedIn: 'root'})
从服务打开延迟加载模块的对话框,也会发生此错误。

要修复它,您必须将该对话框移至主模块或删除

providedIn
表示法并将其添加为延迟加载模块中的
providers: []


3
投票

从 import {MatDialogModule} from '@angular/material/dialog' 导入对话框; 通过将以下代码添加到您的 module.ts 文件中

import {MatDialogModule} from '@angular/material/dialog';

然后在imports中导入它,如下所示,

const MaterialComponent = [MatDialogModule];

0
投票

尝试在模式对话框中使用

mat-paginator
时,我遇到了类似的错误。我得到的错误是未提供
mat-tooltip-scroll-strategy
。为了解决这个问题,我必须向组件本身提供
MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER
。解决方案如下所示。

import { MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER } from '@angular/material/tooltip';

@Component({
    selector: 'app-dialog',
    templateUrl: './dialog.component.html',
    styleUrls: ['./dialog.component.scss'],
    changeDetection: ChangeDetectionStrategy.OnPush,
    viewProviders: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],
})
export class DialogComponent { }

© www.soinside.com 2019 - 2024. All rights reserved.