我有一个大型应用程序,决定将其拆分为多个延迟加载的模块。虽然这适用于“较小”的模块,但对于较大的模块,我发现有时/大多数时候,与这些模块相关的视图未使用角度变化检测运行,就像什么都没有改变一样。
应用程序本身非常大,因此,总而言之,将发布“代码段波纹管”。来自逻辑层的更改,例如等待服务完成,并在模板中显示结果,而不更新。
奇怪的是,一旦我敲了键盘上的一个键,它就会恢复,或者使用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 {
}