模块中子应用程序之间的 Angular2 路由

2023-12-23

我正在将 Angular 2.1 用于一个大型应用程序,该应用程序具有多个子模块,每个子模块定义按功能组织的子应用程序。顶层模块通过导入每个子应用程序的路由等,为 RouterModule 配置整个应用程序的所有子路由。因此,从子应用程序的角度来看,它的路由相对于顶层应用程序设置的路由,但是子应用程序并不直接明确地知道其顶级路由实际上是什么。

其中一些子应用程序具有在另一个子应用程序中更完整地定义/控制的实体的摘要面板。从概念上讲,模块的设置如下:

Module 1:
    Imports Module 2
    Routes for Module 1
    Component1A
    App1View (contains Component1A, M2SummaryComponent)

Module 2:
    Routes for Module 2 (one exported as APP2_VIEW_ROUTE, type Route)
    Component2A
    Component2B
    M2SummaryComponent
    App2View (contains Component2A, Component2B)
    ...etc.

我正在寻找一种设计模式,可以将 M2SummaryComponent 编写为链接到其自己模块内的路由,同时在模块 1 的 App1View 中实例化它,而无需以某种方式手动硬编码或重新组装路由。

我曾希望这是一个很常见的问题,Angular 团队可能使用类似的方法使之成为可能router.navigate([APP2_VIEW_ROUTE, ...other params]),您可以简单地传递用于配置与所需路径相关的 RouterModule 的路由对象。然而,查看源代码这似乎不是一个选择。相反,我们有 ActivatedRoute 的示例。

ActivatedRoute 面临的问题(this.route下面)是它将相对于 App1View。所以尝试使用router.navigate(['m2SpecialId'],{relativeTo: this.route})是不可能的,因为它将与我们到达 App1View 的路径相关,而不是返回到模块 2 到 App2View 的首选路线。

据我所知,围绕这些问题的唯一另一种稍微优雅的路线(双关语)是使每个子应用程序的模块都可以作为 ModuleWithProviders 导入,这样就可以选择将顶级路线告知模块应用于其状态。然后编写辅助函数,使用其定义的路由来组装特定于该子应用程序的 URI。

这感觉非常样板......就像框架中已经存在解决方案或设计模式一样,因此出现了这个问题。

问题:

是否有一种使用 Angular2 Router 的设计模式,允许导入其他模块的组件干净地引用自己模块的预配置路由,同时保持灵活的顶级路由定义?


如果您想通过链接访问 M1 中的 M2 组件,那么您应该使用 RouterModule,并且不要在模块 1 中导入模块 2。

module1内部使用

RouterModule.forRoot([
    {
        path: 'module2',
        loadChildren: 'path-of-module2/module2.module#Module2Module'
    }
])

在模块 2 中

RouterModule.forChild([
    {
        path: '',
        component: Module2Component
    }
])

现在您可以从路径“/module 2”打开模块组件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模块中子应用程序之间的 Angular2 路由 的相关文章

  • router.navigate 更改 URL,但不渲染组件

    而不是使用 a href my path my param a 在我的模板中 我愿意使用带参数的函数将我重定向到页面 所以 这就是我在 ts 文件中构建函数的方式 redirectToChat my param this router na
  • Angular 2 形式 + OnPush

    我正在编写一个 Angular 2 应用程序 出于性能原因 我尝试在任何地方使用 ChangeDetectionStrategy OnPush 我有一个复杂的组件 需要 OnPush 才能顺利工作 其中包含另一个显示表单的组件 使用 For
  • 组件没有路由配置 - 嵌套路由 angular2 RC1

    我有嵌套路线 Routes path component RootComponent path parent component ParentComponent 二级路由有参数 Routes path id component ChildC
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • 是否可以使用纯 css 禁用 mat-tab 动画

    我想禁用 Angular Material mat tab 动画 内容滑入到位时发生的动画 我知道可以使用 disabled 属性 但我想知道是否可以使用纯 css 达到相同的效果 EDIT 我们的用户体验团队希望从材质选项卡中删除幻灯片动
  • Angular + Material - 如何使用 formgroup 处理多个复选框

    我有一个从后端获得的兴趣列表 我希望用户能够选择他们想要的兴趣 我将只存储他们在数据库中检查的兴趣 并在他们加载页面时预先填充 但首先我需要获取用户选择的这些兴趣 兴趣组件 ts export class InterestsComponen
  • 如何将属性绑定到 style.width (以像素为单位)?

    我正在使用 Angular 2 并且编写了以下代码 div some texts div 我也尝试过 div some texts div export class MyComponent width number 150 但它并不将宽度绑
  • 类型错误:无法读取未定义的属性“post”

    嗨 我只想使用一个简单的功能 http post 将我的日期发布到页面 我希望服务器能够获取我发布的日期 import Component OnInit from angular core import MarginServcies fro
  • ng 测试在角度通用错误“不完整:未找到规格,用种子 48751 随机化”中失败

    在运行 ng test 命令时将 Angular 7 项目转换为 Angular Universal 错误为 Incomplete No specs found randomized with seed 48751 尝试了不同的方式在 st
  • 如何使用“ADDMORE”按钮在 Angular 6 中上传多个文件?

    你好 埃弗龙 我一直在尝试上传上面 图片 用例 我知道当我们只有一个文件时这很容易 但现在的情况不同了 它由带有文件的对象数组组成 现在我的问题是如何使用对象数组渲染 formdata 对象 其中每个对象都包含一个文件 对于动态形式 我使用
  • 使用 Javascript 在前端创建基本 URL(开发、API 和生产)

    无论开发和部署如何 如何制作适用于 http https localhost 端口和实际域的基本 url 我想创建一个可以在所有场景或条件下工作的基本 url 无论 http https 协议 端口 本地主机和实际域如何 无论是在开发中还是
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • 角度分割列表

    我有一个看起来像这样的列表 A B C 是否有任何简单的方法 而无需创建一个函数 将其展平为一个看起来像这样的数组 A B C 我搜索了 SO 但没有找到任何带有打字稿方法的内容 Thanks 编辑 A B C 是相同类型 看来您正在寻找的
  • 使用验证器禁用 FormGroup

    I had formArray我的复选框checkboxForm 如果没有复选框 我需要禁用按钮提交checked 我在我的上实现了自定义验证器checkboxForm 这是我尝试过的 Ts file get formReceivedSum
  • Angular 2 兄弟组件通信

    我有一个列表组件 当在 ListComponent 中单击某个项目时 该项目的详细信息应显示在 DetailComponent 中 两者同时出现在屏幕上 因此不涉及路由 如何告诉详细组件列表组件中的哪个项目被单击 我考虑过向父级 AppCo
  • Angular 应用程序在 IE11 中给出空白页面

    Angular应用程序仅加载于Internet Explorer浏览器版本 当开发人员工具 F12 侧边栏打开时 没有使用任何 MDL 组件 因此它不同于this https github com google material desig
  • 错误 TypeError:无法使用角度 6 读取 ngx-bootstrap 中 null 的属性“createText”

    我想使用以下命令从不同的组件打开 ngx bootstrap 模式 ViewChild在角度 6 但我收到此错误 错误类型错误 无法读取 null 的属性 createText 在 ComponentLoader push node mod
  • Angular 6 更新 - 未找到 rxjs-5-to-6-migrate 命令

    在升级过程中从更新 angular io https update angular io 使用 rxjs tslint 自动更新规则删除已弃用的 RxJS 6 功能 对于大多数应用程序 这意味着运行以下两个命令 npm install g
  • Angular2 http.post 被执行两次

    我遇到一个奇怪的问题 Angular2 的 RC1 Http 服务执行 http post 调用两次 我已经调试了我的应用程序 并且我知道这不是点击事件问题 导致核心服务调用的所有调用 public create json Object p

随机推荐

  • 如何以编程方式触发 D3 拖动事件?

    所以我有一些与拖动事件侦听器绑定的数据 myNodes enter append svg g call d3 behavior drag on drag function console log d3 event dx d3 event d
  • 根据文件是否包含字符串进行搜索然后删除

    我想在单个目录中的多个文本文件中搜索字符串 monkey 如果该字符串存在 那么要么 取决于最简单的 重命名匹配的字符串 例如更改猴子monkey1并保存然后文件并进行搜索 处理 or 删除任何具有匹配字符串的文件 已经搜索过 但似乎找不到
  • 重定向 301 中的重定向过多

    我想从旧网址到新网址进行 301 重定向 旧网址 php zend framework captcha codigo anti spam zend framework 新网址 http www demo31 com blog php zen
  • 如何防止 Emacs org-mode 分割窗口?

    我是一个新的 emacs 用户 使用 emacs 来实现很棒的组织模式 我的页面顶部有指向所有组织文件的链接 但每次单击链接时 它都会分割我的窗口 因此我只有一半的屏幕空间可用 如何设置它以便 emacs 不会水平分割窗口 而是为我的链接打
  • 如何在swift 4中获取今天和明天的日期

    如何获取当前日期unix epoch timeIntervalSince1970打印当前时间 有什么办法可以获取今天中午 12 点的时间吗 例如 当前时间为 2018 年 1 月 7 日下午 5 30 timeIntervalSince19
  • 收到 pylint 警告:“未找到配置文件,使用默认配置”

    pylint reports n main py Output No config file found using default configuration 您将得到 No config file found using default
  • 如何将 foreach 与二维对象数组一起使用?

    这是我的尝试 但不起作用 我是初学者 这个想法是有一个简单的 Kid years 整数二维数组来了解如何将 foreach 与对象一起使用 using System namespace Test class Kid public int y
  • 禁用反应式 Elasticsearch 客户端

    我的 spring boot 版本 2 4 1 应用程序已使用自动连接的 org elasticsearch client RestHighLevelClient 成功连接到 ElasticSearch v7 9 3 实例 我只需指定应用程
  • ASM x64 scanf printf 双精度,GAS

    我不明白为什么这段代码对我不起作用 我需要对双精度使用 scanf 函数 然后对同一个双精度使用 printf 使用此代码时结果并不好 我看到的都是非常随机的角色 data d1 double format asciz lf n forma
  • 检测PHP是否安装了Mod_Security?

    有没有简单的方法可以仅使用 PHP 来检测 modsecurity 是否已安装并启用 理想情况下 无需执行任何 exec 终端类型命令 有些人建议使用 apache get modules 但这个特定的网络主机不允许它显示 其他用户也提到了
  • 如何获得 R 中前 n 个值及其索引?

    我有一个只有一列的数据框 我想用它的索引找到最大的三个值 例如我的数据框df好像 distance 1 1 2 4 3 2 4 3 5 4 6 5 7 5 我想找到最大的 3 个值及其索引 所以我的预期结果是 distance 6 5 7
  • 如何在本地调试EventHubTrigger?

    我正在尝试在本地调试 Azure 函数 这是一个EventHubTrigger 问题是我需要在本地调试代码 因为我仍然没有 真实 设置 我的代码目前如下所示 public static class Notificator FunctionN
  • 如何在 Spring Boot 中使用 Mapstruct 映射父级和子级?

    我有父级 产品 和子级 书籍 家具 并且希望将产品实体映射到产品 DTO 如您所见 产品被映射并存储在数据库中的单个表中 如何映射具有子项额外详细信息的父项产品 我看过this https stackoverflow com questio
  • 运行Qemu后只是黑屏

    我刚刚安装了 QEMU 并编译了支持 ARM 的 Linux 内核 但是当我运行下面的命令时 qemu system arm M versatilepb m 128M kernel home arit QEMU linux 3 8 4 ar
  • 在 RealityKit 中锚定多个场景

    将多个场景 来自 Reality Composer 加载到 arView 时 场景不会锚定在同一空间中 在此示例中 scene1 在应用程序启动时加载 按下按钮后 scene2就被添加到场景中 在这两个场景中 模型都放置在原点 并预计与添加
  • 无法在 WPF 中设置动画后的属性

    我使用以下代码为我的窗口设置动画 winLogin login new winLogin login Owner this login Show DoubleAnimation da new DoubleAnimation da From
  • 说服 Webpack 解释其“无法解析 'foo'” 错误

    我怎样才能说服Webpack 当它要发出时Can t resolve foo also 发出有关的信息它尝试过的地方 to find那个图书馆 错误信息Can t resolve foo 没有帮助 因为这是一条死胡同 读者不知道 Webpa
  • 仅使用 css/bootstrap 粘性多个表头 (thead) 行

    我试图在下面有多行 thead 标签被粘贴 而表格的其余部分是可滚动的 This https stackoverflow com questions 12266262 position sticky on thead 59690013 59
  • 按下主页按钮后如何在后台设置 CABasicAnimation 动画?

    我是ios开发的新手 我在我的项目中使用轮子图像 动画在前景模式下工作正常 之后我按下主页按钮 现在我重新启动应用程序 滚轮动画不起作用 这是我的代码 CABasicAnimation animation CABasicAnimation
  • 模块中子应用程序之间的 Angular2 路由

    我正在将 Angular 2 1 用于一个大型应用程序 该应用程序具有多个子模块 每个子模块定义按功能组织的子应用程序 顶层模块通过导入每个子应用程序的路由等 为 RouterModule 配置整个应用程序的所有子路由 因此 从子应用程序的