通过自定义Angular Material模块导入组件

时间:2017-11-27 19:15:47

标签: javascript angular angular-material2

遵循建议的最佳做法,我将我打算用的所有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导入?

0 个答案:

没有答案