延迟加载的模块更改检测-角度5

时间:2019-07-10 07:53:52

标签: angular5 lazy-loading angular2-changedetection

我有一个大型应用程序,决定将其拆分为多个延迟加载的模块。虽然这适用于“较小”的模块,但对于较大的模块,我发现有时/大多数时候,与这些模块相关的视图未使用角度变化检测运行,就像什么都没有改变一样。

应用程序本身非常大,因此,总而言之,将发布“代码段波纹管”。来自逻辑层的更改,例如等待服务完成,并在模板中显示结果,而不更新。

奇怪的是,一旦我敲了键盘上的一个键,它就会恢复,或者使用CREATE TABLE TODO(  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,  title VARCHAR(255) NOT NULL,  deadline DATETIME,  importance INT(1) NOT NULL,  regdate DATETIME DEFAULT NOW(),  status VARCHAR(20) DEFAULT 'TODO', PRIMARY KEY (id)  ); ChangeDetectorRef调用手动检测。此行为是随机发生的,并且大多数情况下是针对较大的延迟加载模块。

有人在使用延迟加载的模块之前遇到过任何问题,这是Im首次使用此方法,也许Im缺少了一些东西,我们非常感谢您的帮助。模板使用的是常规模板,在markForCheck级别上具有订阅,没有什么特别的。这些服务被调用,我已经对其进行了多次检查,但是问题是视图中呈现的数据没有更新。这个精确的组件可以完美工作,直到更改为延迟加载的模块为止。

延迟加载的模块:

ngOnInit

调用此模块的父级(在appModule中调用)

@NgModule({
    imports: [
        ...multiple modules
        RouterModule.forChild(homeRoutes),
    ],
    providers: [...multiple services],
    declarations: [HomeComponent]
})

export class HomeModule {
}

及其关联的路由器:

@NgModule({
    imports: [
        CommonModule,
        FormsModule,
        HttpClientModule,
        MatTooltipModule,
        AppRoutingModule,
        BrowserAnimationsModule,
        RouterModule.forChild(mainRoutes),
        ToolsModule,
        BMWTranslateModule,
        ModalModule,
    ],
    providers: [HttpClient, MainServiceState, AppState, RouterService, ...etc],
    declarations: [MainComponent, NavbarComponent],
    exports: [MainComponent]
})

export class MainModule {
}

0 个答案:

没有答案