Javascript 通过自定义角度材质模块导入零部件

Javascript 通过自定义角度材质模块导入零部件,javascript,angular,angular-material2,Javascript,Angular,Angular Material2,根据推荐的最佳实践,我将所有打算使用的角材料模块导入到自定义模块中: import { NgModule } from '@angular/core'; import { MatIconModule, MatChipsModule, MatCardModule, MatGridListModule, MatMenuModule, MatToolbarModule, MatSidenavModule, MatListModule,

根据推荐的最佳实践,我将所有打算使用的角材料模块导入到自定义模块中:

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>;
}
导出类MyComponent实现OnInit{
选择:字符串;
计数:数字;
dialogRef:MatDialogRef;
}
互联网上所有使用导入模块()的示例都直接从
@angular/material
导入组件,这似乎与导入模块的点相反。我的期望是这些也应该通过我的
MaterialModule
,但我还没有找到一个有效的过程。一项建议是将
声明:[MatDialogRef]
添加到
MaterialModule
的主体中。另一种方法是添加
entryComponents:[MatDialogRef]
。另一个仍然是直接导入/导出组件,就像模块一样。这些解决方案都不起作用。TypeScript每次都会抱怨“找不到名称”MatDialogRef“


导入角度材质组件的最佳做法是什么?这可以通过一个模块来完成吗?或者我应该直接从
@angular/material
导入吗?

这里最大的区别是共享angular模块和typescript导入的方式

通过从angular模块导出组件,可以在导入组件的模块的HTML中使用该组件。但是如果您想将组件导入到typescript中,您需要引用实际的文件,因为typescript需要它来编译组件的代码


因此,您必须从组件中的@angular/material导入它,您需要从angular material for typescript导入模块。在您的情况下,我将如下所示:

从'@angular/material'导入{MatDialogRef}


请尝试此操作并共享更新

你知道如何在组件上使用它了吗?我面临着同样的问题在我的案例中,我需要在我的组件的确切模块中导入该模块,而不是在主模块中module@PauloGaldoSandoval我最终接受了米奇·拉默斯的建议,直接从@angular/material导入。我已经按照他们说的那样完成了模块,只需要在模块上导入,您将在主模块上使用材料组件编号