【发布时间】:2017-11-29 01:20:37
【问题描述】:
我正在使用 Angular 和 Angular Material 构建应用程序,但我的模块结构存在一些问题。
正如指导方针所建议的那样,导入 MaterialModule 已被弃用,不应再进行,这就是为什么我制作了一个单独的 MaterialModule,我只导入我需要使用的 Material 模块;然后将此模块导入到 SharedModule 中,该模块最终会在需要的任何地方导入,包括主 AppModule。
我正在使用的 Material 组件之一是 MdTooltip,除了我在平板电脑上测试我的应用程序时,它一切正常:发生的情况是,工具提示不会像预期的那样对长按做出反应到,他们不会打开。我设法使它工作的唯一方法是在我的 AppModule 中导入完整的 MaterialModule(来自 @angular/material),这是非常错误和不雅的。任何其他方法似乎都无法解决问题,因为它们都会带来自己的问题,同时无法解决问题。
这些是我的模块(去掉了多余的导入语句):
材料模块:
import { NgModule } from '@angular/core';
import {...} from '@angular/material';
@NgModule({
imports: [
MdGridListModule,
MdButtonModule,
MdTabsModule,
MdToolbarModule,
MdCardModule,
MdInputModule,
MdSelectModule,
MdAutocompleteModule,
MdIconModule,
MdTooltipModule
],
exports: [
MdGridListModule,
MdButtonModule,
MdTabsModule,
MdToolbarModule,
MdCardModule,
MdInputModule,
MdSelectModule,
MdAutocompleteModule,
MdIconModule,
MdTooltipModule
],
providers: [
MdIconRegistry
]
})
export class MaterialModule {}
共享模块:
import { MaterialModule } from '../material/app-material.module';
@NgModule({
imports: [
CommonModule,
MaterialModule,
FlexLayoutModule,
FormsModule,
ReactiveFormsModule
],
declarations: [
NavbarComponent,
SearchFiltersComponent,
RightCurrencyPipe
],
exports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
MaterialModule,
FlexLayoutModule,
NavbarComponent,
RightCurrencyPipe,
SearchFiltersComponent
],
providers: [
SpinnerService,
ProductsService,
StatePersistenceService
]
})
export class SharedModule {}
应用模块:
import { MaterialModule } from "@angular/material";
@NgModule({
declarations: [
AppComponent,
ProductPageComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule,
BrowserAnimationsModule,
AppRoutingModule,
SharedModule,
CoreModule,
LoginModule,
MaterialModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我做错了吗?您将如何将您的应用程序划分为子模块?
提前致谢
【问题讨论】:
-
我做了和你一样的事情,但是我得到了“StaticInjectorError[ElementRef]:”错误,所有东西都加载了,但是角材料组件不起作用。你知道为什么吗?
标签: angular typescript angular-material2