Ich dachte, ich verstehe, wie ngModule
funktionierte, aber anscheinend nicht. Ich habe 3 Module: AppModule
, AmpedFormsModule
und AmpedCommonModule
(die unten sind) Das Problem ist, dass wenn ich versuche, und importieren Sie die AmpedFormsModule
in AmpedCommonModule
es gibt mir diesen Fehler und die Log-Konsole geben Sie mir nicht definiert:Unerwarteter Wert 'undefined' importiert durch das Modul
Unerwarteter Wert 'undefined' vom Modul 'AmpedCommonModule'
importiert. Ich habe schon einiges ausprobiert mit dem Import, habe aber keinen Erfolg gehabt. Ich versuchte auch, ein anderes Modul zu verursachen und hatte das gleiche Problem mit diesem Modul, das versucht, entweder die allgemeinen oder Formmodule zu importieren. Jeder Punkt in die richtige Richtung wird sehr geschätzt!
app.module.ts
import { NgModule } from '@angular/core';
import { HttpModule } from '@angular/http';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { ModalModule } from 'angular2-modal';
import { BootstrapModalModule } from 'angular2-modal/plugins/bootstrap';
import { AppComponent } from './app.component';
import { HomepageComponent } from './app.homepage';
import { AmpedFormsModule } from './amped/forms/amped.forms.module';
import { AmpedCommonModule } from './amped/common/amped.common.module';
import { routes,
appRoutingProviders } from './app.routes';
import
{ LocationStrategy, HashLocationStrategy} from '@angular/common';
@NgModule({
imports: [
BrowserModule,
AmpedFormsModule,
AmpedCommonModule,
HttpModule,
ModalModule.forRoot(),
BootstrapModalModule,
routes
],
declarations: [ AppComponent, HomepageComponent ],
providers : [appRoutingProviders, {provide: LocationStrategy, useClass: HashLocationStrategy}],
bootstrap: [ AppComponent ]
})
export class AppModule { }
./amped/forms/amped.forms.module
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HttpModule } from '@angular/http';
import {
FormsModule,
ReactiveFormsModule } from '@angular/forms';
// ... imports
import { AmpedCommonModule } from '../common/amped.common.module';
@NgModule({
imports : [ CommonModule, FormsModule, ReactiveFormsModule, HttpModule, AmpedCommonModule ],
declarations : [ ... declarations ],
exports : [ ... exports ],
providers : [ ... services ],
entryComponents : [ ]
})
export class AmpedFormsModule {}
./amped/common/amped.common.module
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
// ... imports
import { AmpedFormsModule } from '../forms/amped.forms.module';
console.log('CRUUD', AmpedFormsModule);
@NgModule({
imports : [BrowserModule, FormsModule, AmpedFormsModule],
declarations : [ ... declarations ],
exports : [ ... exports ],
providers : [ ],
})
export class AmpedCommonModule { }
app.routes.ts
import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomepageComponent } from './app.homepage';
import { crudRoutes } from './amped/forms/amped.forms.routes';
export const appRoutes: Routes = [
...crudRoutes,
{ path: '', component: HomepageComponent, pathMatch: 'full' },
];
export const appRoutingProviders: any[] = [];
export const routes: ModuleWithProviders = RouterModule.forRoot(appRoutes);
./amped/forms/amped.forms.routes
export const crudRoutes: Routes = [
{ path: 'edit/:model', component: AmpedCrudTableComponent },
{ path: 'edit/:model/:id', component: AmpedCrudFormComponent }
];
Meine Vermutung wäre die zirkuläre Abhängigkeit mit den Modulen, die es scheitern verursacht. Wahrscheinlich brauchen Sie einige Umstrukturierung –
Wie würden Sie die Importe strukturieren? Mein Gedanke war, dass jedes Modul importieren würde, was es benötigt? – locrizak
Ja, aber zirkuläre Abhängigkeiten sind ein Problem.Sie müssen sich etwas Zeit nehmen, um darüber nachzudenken, wie Sie das schaffen können, ohne diese zirkuläre Abhängigkeit zu verursachen. Wenn Komponenten aus verschiedenen Modulen voneinander abhängig sind, ist dies möglicherweise ein Zeichen dafür, dass sie Teil desselben Moduls sein sollten. –