angular - 子路由中的延迟加载模块
问题描述
我只是有一个问题,当我以角度延迟加载孩子的孩子时,我的组件没有加载。由于某种原因,解析器已加载。
具体来说,我已经在我的应用路由模块中加载了我的子路由。对于这种情况,我使用前面提到的延迟加载。这些子路由加载没有任何问题,但是如果我想在此路由中加载另一个子路由,则会出现问题。代码的结构相同,但由于某种原因,它不能在更深的一层上工作。你们中是否有人可能有此用例的代码示例,或者知道为什么会发生这种情况?
编辑了更多细节:我为 app.module 创建了一个解析器(您可以识别它是否与 console.log 一起加载)。如果您输入 URL([...]stackblitz/first/second),Angular 的正常行为是加载解析器。如果我将其声明为子组件,则不再加载组件,但解析器仍然会加载。
这是链接:https ://stackblitz.com/edit/angular-6csggp
最好的祝福!:)
解决方案
个别路线
正如我在评论中已经提到的,LazyLoading 的工作原理是一样的,无论你想要实现它的深度。我创建了一个小的StackBlitz来给你一个例子来说明它是如何工作的。
嵌套路线(儿童)
如果您想将您的路线声明为子路线(这是您想要通过我阅读的内容执行的操作),角度将尝试将它们加载为嵌套导航。粗略解释,这意味着您app.component
有一个<router-outlet>
托管您的父组件的app-routing.module
. 在您的路由中声明的子级将依次加载到<router-outlet>
位于父组件中的 a 中。如果多条路由有共同点(例如标头),则通常使用这种路由方法,因此不应在每条路由中重复。
或者,换句话说,与导航树中每个级别匹配的组件将显示在彼此下方,而不是相互替换。因此,就您而言,他们可能会解决但没有<router-outlet>
居住权。
我修改了fork StackBlitz以向您展示嵌套导航如何与 LazyLoading 一起使用。此外,一个直接链接,即使直接打开,您也可以看到所有内容都在加载/top-level-nested/first-child/second-child
:https ://angular-juudzm.stackblitz.io/top-level-nested/first-child/second-child
推荐阅读
- ubuntu - 有没有办法在 Puppeteer for Firefox 中使用代理?
- reactjs - @parcel/transformer-babel:意外的令牌,预期的“;”
- python - Swift 动态设置新的类属性
- python - 如何在此 html 代码上执行网页抓取?
- firebase - Firebase 网络客户端 gzip 上传到 Cloud Storage
- html - 按钮省略选项
- python - 使用正则表达式删除字符串python的一部分
- julia - 使用 LsqFit 进行多变量输出?
- acl - HAProxy - 算术运算支持
- postgresql - PostgreSQL:对 JSONB 数组类型进行过滤和聚合