首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在角的另一个可注入服务中使用Mat-Dialog的问题

在角的另一个可注入服务中使用Mat-Dialog的问题
EN

Stack Overflow用户
提问于 2022-03-08 12:07:03
回答 1查看 300关注 0票数 -1

这是模块

代码语言:javascript
复制
    @NgModule({
        imports: [],
        declarations: [VariableDialogComponent],
        providers: [OutputFieldsService]
    })
    export class AModule {}

这是OutputFieldsService

代码语言:javascript
复制
@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对话框时,错误将消失。

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

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-08 14:17:42

我没找到发生这种事的原因。但是用以下方法修正它:我将组件作为参数传递,这样我就不会在服务中提到VariableDialogComponent

模块

代码语言:javascript
复制
    @NgModule({
        imports: [],
        declarations: [VariableDialogComponent],
        providers: [OutputFieldsService]
    })
    export class AModule {}

OutputFieldsService

代码语言:javascript
复制
@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()
  }
}

然后

代码语言:javascript
复制
this.outputFieldsService.addParameter(VariableDialogComponent)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71394782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档