0

前段时间我被指示实现一个材质模块以在其他模块中共享

为简洁起见,假设是这样的:

import { NgModule } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDialogModule } from '@angular/material/dialog';

@NgModule({
  exports: [
    MatButtonModule,
    MatCheckboxModule,
  ]
})
export class MaterialModule {}

然后在另一个模块中,我导入该模块

import { NgModule } from '@angular/core';
import { MaterialModule } from '../material.module';

@NgModule({
  imports: [
    MaterialModule
  ]
})
export class MyModule {}

在 MyModule 的一个组件中,我想引用一个 MatDialog 但似乎我需要在组件中再次导入

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

这是做事的正确方法吗?

似乎是双重导入,一次在共享模块中,然后在组件中单独导入,该组件是已经导入共享 MaterialModule 的模块的一部分

从“@angular/material/dialog”导入 { MatDialogModule };

从“@angular/material/dialog”导入 { MatDialog };

我很确定我正在加倍进口,但 IDE(VS 代码)正在指导我这样做。

在我的组件中引用 MatDialog 的最小导入数是多少?具体在构造函数中

constructor(public dialog: MatDialog) {}

https://material.angular.io/components/dialog/examples是一个没有共享 MaterialModule 的简单示例。

4

1 回答 1

1

是的,您需要一个导入对话模块和对话服务。这不是双重进口——它是不同的实体。Material 示例也有一个共享模块。请查看他们的StackBlitz在此处输入图像描述 下划线 - 是共享材料模块。

于 2021-10-21T22:57:43.573 回答