18

我正在尝试通过路由在我的应用程序中启动模式。除了在 URL 中添加了一个额外的斜杠以防止其解析之外,一切似乎都有效。网址应该看起来像这样(如果我手动输入它就可以工作)......

/accounts(modal:accounts/1/edit)

但我得到了这个(注意基本网址和出口目标之间的斜线)......

/accounts/(modal:accounts/1/edit)

基本标签已设置...

<head>
  <meta charset="utf-8">
  <title>myApp</title>
  <base href="/">
  ...
</head>

这是我的路由配置(accounts-routing.module.ts)

const ACCOUNT_ROUTES: Routes = [
  {
    path: 'accounts',
    component: AccountsIndexComponent
  },{
    path: 'accounts/new',
    component: AccountsNewComponent
  },{
    path: 'accounts/:id',
    component: AccountsShowComponent
  },{
    path: 'accounts/:id/edit',
    component: AccountsEditComponent,
    outlet: 'modal'
  }
];

和插座(app.component.html)

<router-outlet></router-outlet>
<router-outlet name="modal"></router-outlet>

而且链接...

<a [routerLink]="[{ outlets: { modal: ['accounts', account.id, 'edit'] } }]">Edit</a>

我错过了什么?该项目是使用创建的angular-cli@1.0.0-beta.26angular@2.4.6并且angular-router@3.4.6已安装。

FWIW,这是日志的屏幕截图...

路由尝试失败

4

1 回答 1

43

修复是在链接上定义一个空的相对路径。感谢@unitario 为我指明了正确的方向!

<a [routerLink]="['', { outlets: { modal: ['accounts', account.id, 'edit'] } }]">Edit</a>
于 2017-02-07T19:25:28.933 回答