2016-11-11 3 views
2

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 } 
];
+0

Meine Vermutung wäre die zirkuläre Abhängigkeit mit den Modulen, die es scheitern verursacht. Wahrscheinlich brauchen Sie einige Umstrukturierung –

+0

Wie würden Sie die Importe strukturieren? Mein Gedanke war, dass jedes Modul importieren würde, was es benötigt? – locrizak

+0

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. –

Antwort

5

Sein hartes Problem genau zu sagen, aber es gibt einige Vorschläge,

1) Änderung BroswerModule zu CommonModule in AppCommonModule. Denken Sie daran, BroswerModule sollte ich sein Wird nur von AppModule oder RootModule übermittelt.

2) nicht sicher, aber es scheint, dass Sie zirkuläre Abhängigkeiten schaffen durch das Modul ineinander importieren aber wie gesagt nicht, obwohl sicher.

@NgModule({ 
    imports  : [FormsModule, AmpedFormsModule],  //<<< here 
}) 

@NgModule({ 
    imports  : [ HttpModule, AmpedCommonModule ], //<<< here 
    ... 
}) 

3) Wenn AmpedFormsModule und AmpedCommonModule sind faul Module nicht vergessen Standard Schlüsselwort vor der Klasse Schlüsselwort

eg. export default class AmpedFormsModule {} 
+1

Ich sehe was du jetzt meinst. Ich hatte diese zwei Module, die versuchten, zu viel zu tun und zu schlau zu sein. Ein bisschen überarbeitet und eine Komponente nicht gefunden Fehler aber besser als vorher. Danke für die Tipps! – locrizak

Verwandte Themen