angular – 模块导入的意外值’undefined’
我以为我理解ngModule是如何工作的,但显然不是.我有3个模块:AppModule,AmpedFormsModule和AmpedCommonModule(下面是这个)问题是,当我尝试将AmpedFormsModule导入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,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,AmpedFormsModule],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 } ]; 解决方法
很难说确切的问题,但建议很少,
1)在AppCommonModule中将BroswerModule更改为CommonModule.Keep记住BroswerModule只能由AppModule或RootModule导入. @NgModule({ imports : [CommonModule,FormsModule],... }) 2)不确定,但似乎你通过将模块导入到彼此中来创建循环依赖,但是尽管如此表示不确定. @NgModule({ imports : [FormsModule,//<<< here }) @NgModule({ imports : [ HttpModule,//<<< here ... }) 3)如果AmpedFormsModule和AmpedCommonModule是惰性模块,请不要忘记在类关键字之前放置default关键字 eg. export default class AmpedFormsModule {} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |