我以为我明白ngModule
的工作方式,但显然不是。我有3个模块:AppModule
,AmpedFormsModule
和AmpedCommonModule
(在下面)的问题是,当我尝试导入AmpedFormsModule
为AmpedCommonModule
它给了我这个错误,并且控制台日志给我不确定:模块导入的意外值'undefined'
预期的值'undefined'由模块'AmpedCommonModule'导入
我已经尝试了很多与玩进口但没有任何成功的事情。我也尝试创建另一个模块,并试图导入Common或Form模块的模块有相同的问题。任何正确的方向点非常感谢!
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 }
];
我的猜测是循环依赖与模块导致它失败。可能需要进行一些重组 –
您将如何构建进口?我的想法是,每个模块都会导入所需的内容? – locrizak
是的,但循环依赖是一个问题。你需要花一些时间考虑如何在不引起这种循环依赖的情况下完成这项工作。如果你有来自不同模块的组件相互依赖,也许这是一个标志,他们应该是同一个模块的一部分 –