Buduję aplikację przy użyciu Angulara połączonego z materiałem kątowym i mam pewne problemy ze strukturą modułów.Jak poprawnie zaimportować moduł Angular Material przez wspólny moduł w Angular 4?
Zgodnie z wytycznymi, importowanie modułu materiałowego jest nieaktualne i nie powinno już być wykonywane, dlatego stworzyłem oddzielny moduł materiałowy, w którym tylko importuję moduły materiałów, których potrzebuję użyć; moduł ten jest następnie importowany do SharedModule, który jest ostatecznie importowany wszędzie tam, gdzie jest potrzebny, w tym główny AppModule.
Jednym z używanych przeze mnie Materiałów jest MdTooltip, i wszystko działa dobrze, z wyjątkiem sytuacji, gdy testuję swoją aplikację na tablecie: co się dzieje, to, że podpowiedzi nie reagują na długie krany, jak na przykład przypuszczam, i nie otworzą się. Jedynym sposobem, w jaki udało mi się to zrobić, jest importowanie pełnego modułu MaterialModule (z @ kątowego/materiału) w moim AppModule, co jest horrendalnie złe i nieeleganckie. Każde inne podejście nie wydawało się, by to przerwać, ponieważ wszystkie one przyniosłyby własne problemy, nie rozwiązując próby.
To są moje moduły (pozbawione zbędnych sprawozdań import):
MaterialModule:
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 {}
SharedModule:
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 {}
AppModule:
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 { }
jestem doi coś złego? Jak byś podzielił swoją aplikację na submoduły?
góry dzięki
Zrobiłem to samo, ale dostałem "StaticInjectorError [ElementRef]:" błąd, wszystko jest załadowane, ale kątowe komponenty materiału nie działają. nie masz pojęcia, dlaczego? – molikh