我们确实有一个主要的角度应用程序,它引用了代表主应用程序子区域的库。
我们希望能够在我们的库中定义分离的路线。
例如:
- app 有根路径:/app
- 库有子路径:/library
在路由 /app/library 之后,它应该重定向到存储在库中的组件。
我们通过使用延迟加载实现了这一点。它仅在您使用主应用程序中 Route 的“loadChildren”属性连接路由时才有效。
我们还被迫应用 Angular 团队建议的解决方法从位于 node_modules 的库包中延迟加载模块无法构建- 这是使用代理/包装器模块来延迟加载角度工作区或节点模块中的库。
不管怎样,我们都搞定了。
现在问题开始了:
Angular 生命周期事件(例如:ngOnInit)在我们库中的组件中不起作用。当我们使用预加载引用库时(同时丢失了我们路由想要的),角度钩子开始工作得很好。这里可能有什么问题?
是 Angular 的问题吗?我们希望我们的应用程序结构良好,这就是我们将一些区域分成独立库的原因。但是,我们即将放弃并将所有代码移动到主应用程序中。
编辑:
app.module 中的路由(forRoot,延迟加载):
export const routes: Routes = [
{ path: 'app', loadChildren: './lazy/lazy-wrapper.module#LazyWrapperModule' },
];
路由(LazyWrapperModule,在主应用程序内)(forChild):
{ path: '', component: LibraryComponent, pathMatch: 'full' },
库中的路由(forChild):
{ path: 'library', component: TargetComponent },