当前位置: 首页 > 知识库问答 >
问题:

角度 2:共享同一解析器的同级子路由

阳英朗
2023-03-14

我试图找出是否有一个更优化的方法在两个兄弟孩子路由之间共享同一个解析器。下面是一个路由与解析器相关的示例。

import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
export const routes = [{
        path: '',
        component: parentComponent,
        canActivate: [AuthGuard],
        resolve: {
            someData: someDataResolver
        },
        children: [
            { path: '', redirectTo: '0', pathMatch: 'full' },
            { path: '0', 
                component: someComponent1,
                resolve: {
                    someData1: someData1Resolver,
                    someData2: someData2Resolver,
                }
            },
            { path: '2', 
                component: someComponent2,
                resolve: {
                    someData2: someData2Resolver
                }
            }
            ... a bunch more children routes/components with resolvers

        ]
    }]

现在,我正在为每个子路由重复解析器调用,我认为这不是最优的。有人知道有没有更好的方法来共享来自共享同级子解析器的数据吗?我考虑将来自重复解析器的数据设置为共享服务,然后另一个子同级路由将访问来自服务的数据(而不是在解析器中进行另一个api调用)。还有其他更好的解决方案吗?

共有1个答案

薛扬
2023-03-14

您可以添加具有无组件父路由的附加级别,并将解析器向上移动到此级别:

import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
export const routes = [{
        path: '',
        component: parentComponent,
        canActivate: [AuthGuard],
        resolve: {
            someData: someDataResolver
        },
        children: [
            { path: '', 
                resolve: {
                    someData2: someData2Resolver
                },

            children: [
                { path: '', redirectTo: '0', pathMatch: 'full' },
                { path: '0', 
                    component: someComponent1,
                    resolve: {
                        someData1: someData1Resolver,
                    }
                },
                { path: '2', 
                    component: someComponent2,
                }
                ... a bunch more children routes/components with resolvers
            ]
        ]
    }]
 类似资料:
  • 问题内容: 我想用以下结构构建一个站点header-view,main-view,footer- view。因此,我定义了一个包含页眉和页脚的根路由。root的子代将是我的全部站点。在这些站点中,我将拥有更多的嵌套视图。 在下面的代码中,它确实显示了页眉,但未显示页脚和主视图。一旦删除父级继承,它将显示主视图,但不显示页眉和页脚。 的HTML JS 问题答案: 有一个与正在工作的矮人有关的链接。

  • 问题内容: 我正在开发一个Angular应用程序。在此,我将在进入仪表板之前对用户进行身份验证。为了达到这个目的,我写了as 登录功能 我还想限制用户访问路由(如果尚未登录)。为此,我想到了this 。 路线 我说上面的代码 DIRTY 的原因是,如果我要保护10条未授权用户使用的路由,则必须在所有路由中复制相同的resolve函数。 所以我的问题是,我应该怎么做才能摆脱多重解析功能并能够编写DR

  • 假设我有一个具有endpoint 的 java Web 应用程序,我想同时启动 Web 应用程序的多实例,这可以在每个实例上使用不同的侦听端口来实现。 但我想要的是,所有实例都可以共享相同的路由,即当我向,它将自动(负载平衡)路由到多个实例之一。我想要这样做的原因是,当通过k8s部署微服务时,我们可以为一个应用程序拥有多个pod,并且这些pod共享单个服务(即单个精心设计的url) 在java中,

  • 我很想知道Hibernate二级缓存是否可以在运行在两个不同JVM上的两个不同Hibernate会话之间共享。 我正在使用Hibernate 3.1和Ehcache来提供二级缓存,并且在Ehcache中。xml配置文件我们可以指定在磁盘上创建缓存的位置 因此,如果我现在在不同的JVM中打开两个不同的Hibernate会话,它们都指向同一个JVM,那么这将允许我在两个JVM之间共享二级缓存。 如果是

  • 问题内容: 我已经做了很多XML PATH语句,但是这个语句使我无所适从,甚至对于多个不同的子级也可能无法实现。 最终结果应如下所示 以下是我到目前为止的一些测试表和数据。问题的实质是如何在同一根目录下显示不同的子节点。我可以从列值中得出标签名称吗? 问题答案: 正确,您的样本有许多问题要克服! 首先,我将为您提供答案,尽管请注意,为了正确地进行分层处理,它必须是递归函数,因此,您提供的测试数据必