在 Angular 的另一个可注入服务中使用 Mat-Dialog 时出现问题

Problem with using Mat-Dialog in another injectable service in Angular

这是模块

    @NgModule({
        imports: [],
        declarations: [VariableDialogComponent],
        providers: [OutputFieldsService]
    })
    export class AModule {}

这是 OutputFieldsService

@Injectable()
export class OutputFieldsService {
    constructor(private dialog: MatDialog) {}
    public addParameter() {
    const dialogRef = this.dialog.open(VariableDialogComponent, {
        data: dt,
        disableClose: true,
        minWidth: '30%'
    });
    return dialogRef.afterClosed()
  }
}

并且 AModule 是延迟加载的,所以每次我尝试访问该模块时都会出现此错误

据我所知,这个错误非常具有误导性

当我从服务中删除打开的 VariableDialogComponent 对话框时错误将消失

并且服务和组件在同一个模块中,所以我不明白为什么会出现此错误

我是不是漏了什么?

我没有找到发生这种情况的原因。 但用这种方法修复它: 我将组件作为参数传递,这样我就不会在服务中提及 VariableDialogComponent

模块

    @NgModule({
        imports: [],
        declarations: [VariableDialogComponent],
        providers: [OutputFieldsService]
    })
    export class AModule {}

OutputFieldsService

@Injectable()
export class OutputFieldsService {
    constructor(private dialog: MatDialog) {}
    public addParameter(component: ComponentType<any>) {
    const dialogRef = this.dialog.open(component, {
        data: dt,
        disableClose: true,
        minWidth: '30%'
    });
    return dialogRef.afterClosed()
  }
}

然后

this.outputFieldsService.addParameter(VariableDialogComponent)