在 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)
这是模块
@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)