Angular 路由器导出失败,routerLink 位于 AppComponent 之外

标签 angular router-outlet

我使用 Angular 5.2.0,我导航到:

/page/28/1

对应于:

{path: 'page/:albumId/:pageNo', component: AlbumPageComponent}

AlbumPageComponent html 包含:

<a class="nav-link" [routerLink]="[{ outlets: { popup: ['login'] } }]">

对应于:

{path: 'login', component: LoginComponent, outlet: 'popup'}

应该与 <router-outlet name="popup"></router-outlet> 一起使用放置到经典的 app.component.html 中(这是一个简单的 Angular cli 生成的项目)。

这不起作用,因为我在控制台中注意到它的路径格式错误:

NavigationStart(id: 3, url: '/page/28/1/(popup:login)')

但是这样使用时确实有效:

<a class="nav-link" [routerLink]="" (click)="goToLogin()">

AlbumPageComponent 具有:

goToLogin() {
  this.router.navigate([{outlets: {popup: ['login']}}]);
}

正确的路径就形成了:

NavigationStart {id: 3, url: "/page/28/1(popup:login)"}

请注意,两种情况下的路由命令是相同的,即:

[{outlets: {popup: ['login']}}]

问: routerLink 有什么问题吗?方法?怎么解决?

PS:我还在 .angular-cli.json 中使用:"baseHref": "/albums/",尽管我认为这没有理由成为问题

编辑

https://angular.io/guide/router#wrap-up-and-final-app 中的示例也发生了同样的情况。为了复制,您必须复制 <a/> 联系到 CrisisCenterComponent html。这样,也像我一样,人们会使用 [routerLink]方法在与 AppComponent 不同的组件内。直接在AppComponent html中使用[routerLink]方法有效。

最佳答案

尝试这种格式:

<a class="nav-link" [routerLink]="['', { outlets: { popup: ['login'] } }]">

实际上,取自这里:https://stackoverflow.com/a/42098257/6528560

关于 Angular 路由器导出失败,routerLink 位于 AppComponent 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49699024/

相关文章:

css - 如何在 angular 中使用 [ngStyle] 中的变量?

html - 如何在动态数据表 Angular 中显示空消息

javascript - 共享服务没有将数据更新到父组件 Angular

放置在延迟加载模块中时,Angular 10 辅助路由器 socket 不工作

Angular 5 如何删除 URL 中的辅助路由器导出名称但导出应加载

javascript - 嵌套页面上的 Angular 5 多个路由器导出

node.js - 使用 Fastify 和 Nestjs 上传文件错误

javascript - 如何在 Typescript 中打印 iframe 内容

javascript - 不调用添加了 document.getElementById ('someId' ).appendChild() 的函数

angular - 链接到另一个没有导出的组件