【发布时间】:2017-11-27 19:15:46
【问题描述】:
按照推荐的最佳实践,我将我打算使用的所有 Angular Material 模块导入到自定义模块中:
import { NgModule } from '@angular/core';
import {
MatIconModule,
MatChipsModule,
MatCardModule,
MatGridListModule,
MatMenuModule,
MatToolbarModule,
MatSidenavModule,
MatListModule,
MatTableModule,
MatTabsModule,
MatInputModule,
MatDialogModule,
MatButtonModule
} from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout';
const dependencyArray = [
// Angular Material
MatIconModule,
MatCardModule,
MatGridListModule,
MatMenuModule,
MatToolbarModule,
MatSidenavModule,
MatListModule,
MatTableModule,
MatTabsModule,
MatInputModule,
MatDialogModule,
MatButtonModule,
MatChipsModule,
// flex
FlexLayoutModule
];
/**
* Imports needed Angular Material/flex dependencies.
*/
@NgModule({
imports: dependencyArray,
exports: dependencyArray
})
export class MaterialModule { }
但是,当涉及到导入组件(例如MatDialogRef)时,我不确定该怎么做:
export class MyComponent implements OnInit {
selection: string;
count: number;
dialogRef: MatDialogRef<ServerDialogComponent>;
}
Internet 上所有使用导入模块 (including Angular Material itself!) 的示例都直接从 @angular/material 导入组件,这似乎与导入模块的观点背道而驰。我的期望是这些也应该通过我的MaterialModule,但我还没有找到可行的程序。一项建议是将declarations: [MatDialogRef] 添加到MaterialModule 的正文中。另一个是添加entryComponents: [MatDialogRef]。另一个仍然是像模块一样直接导入/导出组件。这些解决方案都不起作用。 TypeScript 每次都会抱怨,'找不到名称“MatDialogRef”'。
导入 Angular Material 组件的最佳做法是什么?可以通过我已经拥有的模块来完成吗?还是我应该直接从@angular/material 导入?
【问题讨论】:
-
你知道如何在组件上使用它吗?我也面临同样的问题
-
在我的情况下,我需要将该模块导入到我的组件的确切模块中,而不是在主模块中
-
@PauloGaldoSandoval 我最终接受了 Mitch Lamers 的建议并直接从 @angular/material 导入。
-
我已经按照他们说的做了模块,只需要在模块上导入你将使用主模块上没有的材料组件
标签: javascript angular angular-material2