簡體   English   中英

單個延遲加載的模塊中的Angular 6,共享模塊會導致應用無法在更改中工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM