2

我正在尝试导航到嵌套的辅助路线,但我不断收到错误消息:

ERROR Error: Uncaught (in promise):
Error: Cannot match any routes. URL Segment: 'sign-in'

我试图导航到的 URL:

http://localhost:4200/(modalcontainer:modals//modalview:sign-in)

我的路由配置如下所示:

{
  path: 'modals',
  component: ModalsComponent,
  outlet: 'modalcontainer',
  children: [
      {
          path: 'register',
          outlet: 'modalview',
          component: ModalRegisterComponent
      },
      {
          path: 'sign-in',
          outlet: 'modalview',
          component: ModalSigninComponent
      }
  ]
}

所以有 2 个router-outletsmodalcontainermodalview。后者在ModalsComponent.

应用组件

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

模态组件

<div class="overlay" (click)="close($event)">
  <router-outlet name="modalview"></router-outlet>
</div>

填充正常,modalcontainer但是一旦我尝试填充modalview插座,它就会出错。

我尝试过的导航方式是:

  • [routerLink]="[{outlets: {'modalcontainer': ['modals'], 'modalview': ['register']}}]"
  • [routerLink]="[{outlets: {'modalcontainer': ['modals'], 'modalview': ['modals', 'register']}}]"
  • [routerLink]="['modals', {outlets: {'modalview': ['register']}}]"
  • 直接在地址栏输入http://localhost:4200/(modals:modals//modal:sign-in)
  • this.router.navigate([{outlets: {'modalcontainer': ['modals'], 'modalview': ['register']}}]);
  • this.router.navigateByUrl('/(modals:modals//modal:sign-in)');

是我的配置中的某些东西还是我访问 URL 的方式?或者这是一个错误?

4

1 回答 1

0

我从来没有找到答案——这似乎是一个角度的错误。对于遇到相同问题的任何人,我的解决方案是删除嵌套。

我删除了modalcontainer的出口。

我将 modalview 直接添加到我的主要组件中。

我将之前注入到 modalcontainer 中的视图做成了一个组件,该组件接受内容并将其用作我的每个 modalviews 的基本组件。


应用组件

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

模态组件

<div class="overlay" (click)="close($event)">
  <ng-content></ng-content>
</div>

模态注册组件

<modal-container>
  <h3>Register</h3>
  ...
</modal-container>

路由器配置

{
    path: 'modals/register',
    outlet: 'modalview',
    component: ModalRegisterComponent
},
{
    path: 'modals/sign-in',
    outlet: 'modalview',
    component: ModalSigninComponent
}
于 2017-09-07T09:47:57.927 回答