无法在 Angular 中设置到指定出口的路由

2024-01-05

我有三个命名的路由器插座,如下所示。

...
<router-outlet name="menus"><router-outlet>
<router-outlet><router-outlet>
<router-outlet name="footer"><router-outlet>
...

在标记中我想路由第一个,menus,到其中包含某些子菜单垃圾的组件在文档中显示 https://angular.io/guide/router.

<ul *ngFor="let main of menus;" 
    routerLink="[{outlets:{menus:[{{main.link}}]}}]" 
    class="nav-items">{{main.header}}

我收到的错误是这样的:

错误:无法匹配任何路由。 URL 段:“%5B%7Boutlets:%7Bmenus:%5Bsubmenu1%5D%7D%7D%5D”

我不知道语法有什么问题。谷歌搜索我的指甲但没有找到简陋的例子routerLink显示如何在指定出口中指向路线的版本。

Edit:根据评论和示例,我需要重新编写正在使用的代码,但仍然出现相同的错误。在标记中:

<ul *ngFor="let main of menus;" 
    (click)="pullMenu(main.link)" 
    class="nav-items">{{main.header}}

然后,在 TS 中:

constructor(private router: Router, private route: ActivatedRoute) { }

pullSubmenu(input) {
  console.log(input);
  this.router.navigate(
    [{ outlets: { menus: [input] } }], 
    { relativeTo: this.route });
}

现在,我收到以下错误(submenu1是配置的路径的名称)。

错误:无法匹配任何路由。 URL 段:“submenu1”

我的路由是在模块中设置的,如下所示。

const routes: Routes = [
  { path: "submenu1", component: Submenu1Component },
  { path: "submenu2", component: Submenu2Component }
];

@NgModule({
  declarations: [
    AppComponent,
    NavbarComponent,
    MainAreaComponent,
    Submenu1Component,
    Submenu2Component
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(routes)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

您需要使用评估版本[routerLink]:

<ul *ngFor="let main of menus;" 
    [routerLink]="[{outlets:{menus:[{{main.link}}]}}]" 
    class="nav-items">{{main.header}}

作为替代方案,您可以模仿routerLink。这是它的作用的要点:

  @HostListener('click')
  onClick(): boolean {
    const extras = {
      skipLocationChange: attrBoolValue(this.skipLocationChange),
      replaceUrl: attrBoolValue(this.replaceUrl),
    };
    this.router.navigateByUrl(this.urlTree, extras);
    return true;
  }

所以,这是使用的设置navigate代替navigateByUrl:

   @Component({
      template: `
        <ul *ngFor="let main of menus;" (click)="[{outlets:{menus:[{{main.link}}]}}])"
        class="nav-items">{{main.header}}
      `
   ...
   class MyComponent {
      constructor(router: Router, route: ActivatedRoute) {}

      navigate(commands) {
         this.router.navigate(commands, {relativeTo: this.route})

您不能使用未评估的版本routerLink因为它将命令作为字符串读取,如果你有outlets在命令字符串中不起作用。看导航到 routerLink 属性的辅助路由 URL https://stackoverflow.com/a/45396457/2545680了解原因。

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

无法在 Angular 中设置到指定出口的路由 的相关文章

  • 如何使用CSS将背景图像放入选择选项标签中

    我有一个从 json 响应接收的国家 地区下拉列表 并且想要在国家 地区名称旁边添加相应的国家 地区国旗图标 也从 json 响应获取图像 我已经尝试了不同的 jQuery 和 bootstrap 插件 但他们所做的是破坏我以前的选择框样式
  • 将 div 文本分配给变量然后显示它

    我有一个简单的任务 我试图完成学习 JavaScript 但一直无法找到明确的答案 这是代码 div Testing div 基本上我希望将方框 div 中的文本存储到变量中 然后 我想在页面的不同部分显示该变量的文本 使用上面的代码我得到
  • 更改javascript nodejs中所有页面的href url

    我已经实现了具有多种语言下拉菜单的引导导航栏 当我选择语言时 它将翻译页面 如何更改其他页面的 url 和按钮文本 当我选择french 将所有网址更改为 fr about and fr contact 如何使用 JavaScript 进行
  • 从顶部开始在同一水平线上显示同一行中的两个 div

    这是我的代码 floating box display inline block width 150px margin 10px border 3px solid 73AD21 after box border 3px solid red
  • Rxjs、fromEvent处理多个事件

    在 rxjs 5 1 中处理同一 DOM 节点上的多个事件的最佳方法是什么 fromEvent element event name 但我一次只能指定一个事件 我要手柄scroll wheel touchmove touchend even
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • 如何使用降级 Module() 引导应用程序与 ui-router 混合

    我正在使用 ui router 混合 https github com ui router angular hybrid https github com ui router angular hybrid 引导 经典 方式 我们在数据网格中
  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • 多语言标记验证器

    是否有免费的在线多语言标记验证服务可以正确识别和验证多语言标记 我确实找到了totalvalidator和htmlvalidator 但这些是 付费 非基于网络的解决方案 Use http validator w3 org nu http
  • Angular4 屏蔽输入中的字符而不更改其值

    如何屏蔽输入中除 Angular 4 中最后四个字符之外的所有字符 即显示 而不更改实际值 例如 输入文本框中的数字应类似于 1234 且值应为 7671234 使用指令 Directive selector stringHide expo
  • 在 Angular html 模板中访问常量枚举

    假设我有一个常量枚举 export const enum MyConstEnum Value1 Value1 Value2 Value2 Value3 Value3 现在我想在我的 Angular 模板中使用它 span This has
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • angular2 MdDialog 未显示为弹出窗口

    所以我尝试使用 MdDialog 来显示错误消息 不幸的是 它不是显示为弹出窗口 而是显示为页面底部的块 我需要查看或更改哪些内容才能使其正常工作 下面的代码 common modal component html h2 title h2
  • 浮动图像周围具有最小列宽的流动文本

    我想要一种方法来防止流动文本列变得太窄 例如 在一列 HTML 文本中 有一个图像浮动到左侧 正如预期的那样 文本沿着图像周围的列的右侧向下流动 但是 如果图像几乎与列一样宽 则文本最终会非常窄 在这种情况下 我希望文本简单地not流过图像
  • VueJS 中数据无法正确显示

    我的 VueJS 代码有一个小问题 在 输出 压缩的 GS1 数字链接 URI 部分中 When there is no result it should have nothing display like this I have remo
  • 在指令中动态添加 *ngIf

    如何动态地将 ngIf 添加到用属性指令修饰的元素 为了一个简单的实验 我尝试了这个 Directive selector lhUserHasRights export class UserHasRightsDirective implem
  • 转义 h 轮廓

    因此 我一直在尝试找出在被较低级别的标题吸引后添加内容的最佳方法是什么 section h1 Title of Section h1 h2 Related 1 h2 h2 Related 2 h2 p I NEED THIS TO BE P
  • 两列表:一列尽可能小,另一列占据其余部分

    我在 div 中有一个 to columns 表 div table tbody tr td class action a a td td class content p Bigger text variable size p td tr
  • 如何在模态打开时防止主体滚动

    我在用着W3schools 模态脚本 https www w3schools com howto tryit asp filename tryhow css modal我想添加一个功能 防止模型打开时整个主体滚动 我根据我的需要对原始脚本做
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显

随机推荐

  • Android:是否可以用数字更新 ImageView/ImageButton 以显示新消息的数量?

    在 iOS 中 我们有一个功能 可以通过在图标的右上角显示一个小数字来为用户更新应用程序图标 并添加新的待处理消息 类似地 我想知道我们是否有方法来更新 ImageView ImageButton在android中 这里我不想更新主屏幕上的
  • 如何在拉取/合并请求之前更新(拉取)分支?

    例如 假设我有一个名为develop 我的所有功能都将是从创建的分支develop稍后我需要执行合并请求 在 GitLab 中 在 GitHub 中将是拉取请求 如果我需要在将新分支推入之前更新它origin并执行合并 拉取请求 git p
  • WebDriverError 错误:Chrome 无法启动:异常退出

    我正在尝试在 ubuntu 14 04 虚拟机上运行量角器测试 通过谷歌云 由于某种原因 当我运行 量角器conf js 时 我收到一条错误消息 E 启动器 WebDriverError 未知错误 Chrome 无法启动 异常退出 我按照此
  • iPhone SDK:锁定方向

    我在以前的应用程序中看到过它 忘记应用程序名称 您可以在其中锁定屏幕的当前方向 有没有一种简单的方法可以完成此操作 例如 只需使用按钮即可 只需将 ivar 添加到您的应用程序委托即可通过按锁定按钮进行设置 然后在所有视图控制器中 您只需检
  • 如何在 Mac 上安装 sshpass?

    我想从我的 Mac 自动进行 ssh 登录 它确实有一个简单的解决方案 sshpass p my password ssh m username hostname 但我的问题是在我的 Mac 上安装 sshpass 2022 年更新 不幸的
  • 尝试启动多个线程时索引超出数组范围

    我有这段代码 它给了我一个 索引超出了数组的范围 我不知道为什么会发生这种情况 因为变量i应始终小于数组的长度bla因此不会导致此错误 private void buttonDoSomething Click object sender E
  • 获取我的 WAN IP 地址

    我怎样才能以编程方式获取从互联网上看到的我的网络的IP地址 显然 我的路由器在连接到 ISP 时可以访问该属性 有没有办法使用标准协议从路由器获取此信息 我唯一的选择是要么找到一个返回我的IP地址的WS 非常难做到 要么就去类似的地方Wha
  • Webpack:如何使角度自动检测 jQuery 并将其用作 angular.element 而不是 jqLit​​e?

    我正在使用 Webpack 构建 Angular 1 4 项目 该项目使用了多个 jQuery 插件 这些插件被包装在 Angular 指令中 这些指令内部使用angular element 可能暗示 angular element 是真正
  • 如何从现有的可观察对象中删除扩展器?

    我正在使用 Knockout Validation 插件 并使用扩展器根据需要设置可观察值 myObservable extend required true 添加扩展器后可以将其删除吗 您可以从可观察对象中删除所有与验证相关的属性 这些属
  • 从 NSDictionary 设置时,BOOL 值从 NO 更改为 Yes

    我有这个代码 if args valueForKey showSetupScreen BOOL showSetupScreen args valueForKey showSetupScreen NSLog showSetupScreen Y
  • Azure ARM“代码”:尝试更新 vnet 时“InUseSubnetCannotBeDeleted”

    我有一个相当简单的 ARM 模板 用于创建 vnet 子网和服务端点 当我尝试更改服务端点时 出现错误 代码 InUseSubnetCannotBeDeleted 指出我的一台虚拟机正在使用其中一个子网 但是 我不想删除该子网 我只是想更新
  • Google Apps 脚本附加源代码/安全性

    我正在构建一个 Google Apps 脚本插件 并想知道当我将其发布到 Marketplace 时是否任何人都可以访问底层源代码 我想在代码中存储密码 私钥 并希望确保安装该应用程序的任何人都无法访问它 使用 Google Apps 脚本
  • SQL:SELECT IN 更快且最佳实践?

    如果我使用 2 个查询 第一 查询所需的所有键 ID 第二 select from tab1 where tab1 id in ids list ids 列表可能有数千个 这样做是明智的 最佳的做法还是推荐的做法 作为一般规则 考虑到您对较
  • php7 中删除了 utf8_(en|de) 代码?

    我最近在我的开发服务器上切换到 PHP 7 到目前为止 它运行得很好 自从我更新到PHP 7 0 3 10 deb sury org trusty 1 今天早些时候 utf8 decode and utf8 encode功能不再可用 然而
  • 如何在导航抽屉内创建​​可扩展的listView?

    我需要创建一个导航抽屉 例如 Flipkart 或 Astro 文件管理器应用程序 如何用可扩展的 listView 替换 listView 我需要一个像这样的导航抽屉 这是我的xml
  • Angular 2和纯javascript之间的通信

    我正在构建一个角度应用程序 并且我处于必须与外部 javascript 进行通信的情况 Scenario在应用程序初始化期间 我使用以下命令将两个 iframe 注入到 index html 中 document body appendCh
  • 如何将外部 .js 文件包含到 ejs Node 模板页面

    我找不到将外部 js 文件包含到 Node ejs 模板中的方法 我想将逻辑和数据放入外部 js 文件中的对象中 将该文件包含到 index ejs 模板并从中提取数据 我尝试通过插入标准方式 并且它不起作用 然后我尝试了 ejs 特定关键
  • 自动播放视频 iPhone 低功耗模式不起作用

    我有一个视频 它是我的设计中不可或缺的一部分 并且在低功耗模式下 该视频可以在除 iPhone 之外的所有设备上播放 使用自动播放属性 视频将在大多数浏览器中加载时开始 div class footage div
  • 获取 Github 总克隆统计数据

    有没有办法获取任意给定月份的 github 存储库的克隆统计信息 我们有一个 克隆 选项卡 其中包含过去 14 天的统计数据https help github com articles about repository graphs tra
  • 无法在 Angular 中设置到指定出口的路由

    我有三个命名的路由器插座 如下所示