[英]Angular 6, shared module in individual lazyloaded modules causes app not to work on change
嗨,我有一個奇怪的問題,當我使用角度5時,這並不是問題。
這是情況
在應用程序路由模塊中,我有
{
path: 'moduleA',
pathMatch: 'full',
loadChildren: './modules/moduleA.module#moduleA'
},
{
path: 'moduleB',
pathMatch: 'full',
loadChildren: './modules/moduleB.module#moduleB'
},
然后,我有一個共享模塊,該模塊只有一個要評估的組件,並且被聲明並導出..
import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RatingComponent } from './components/rating/rating.component';
import { RatingService } from './services/rating.service';
@NgModule({
imports: [
CommonModule
],
declarations: [
RatingComponent
],
exports: [
RatingComponent
],
providers: [
RatingService
]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
RatingService
]
};
}
}
在兩個模塊中都導入了共享模塊...當我運行ng serve --aot時,該應用程序運行良好,但是當我更改Shared,ModuleA或ModuleB的代碼時,CLI可以成功編譯,但是在瀏覽器中卻出現錯誤:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'call' of undefined
TypeError: Cannot read property 'call' of undefined at __webpack_require__ (bootstrap:81)
我必須停止cli並再次運行它,它才能正常工作。 有誰知道可能是什么問題?
它僅在版本6(嘗試6.0.7和6.1.0)上發生,而如果我在版本5上嘗試它,則沒有任何問題。 另外,如果我從ModuleA或B中排除了SharedModule,那么它將很好地工作,但是在那種情況下,該模塊不會被共享。
謝謝
經過深入分析后,發現即使該應用程序也可以處理模塊的延遲加載,為了能夠工作而不會出現上述問題,事實證明,在app.module.ts文件中,我必須導入所有模塊我正在用lazyload加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.