在Angular 4中删除Aux路由?

3

我看到过一个例子,其中有两个<router-outlet>,只有一个具有name属性 - 所以我进行了一次小测试:

我有这个路由映射:

export  const routing   = [
    {path:'', pathMatch:'full', component:EmptyComponent},
    {path:'dog',   component:DogComponent},
    {path:'bird',   outlet:'under', component:BirdComponent} 
];

我还有这个 routerLinks

<li><a [routerLink]="['']">Clear</a></li>
<li><a [routerLink]="['dog']">Only Dog</a></li>
<li><a [routerLink]="['/', {outlets: {under: ['bird','' }}]">Only Bird</a></li>
<li><a [routerLink]="['dog',{outlets: {under: ['bird','' }}]">Dog & Bird</a></li>

<router-outlet></router-outlet>
<hr>
<router-outlet name='under'></router-outlet>

问题:

如果我点击Clear - 我什么都不看到 (✓)
然后,如果我点击Only Dog - 我只看到一只狗 (✓)
接着,如果我点击Only Bird - 我看到了狗和鸟 (✕ - 为什么?我想只看到一只鸟) 如果我点击Dog & Bird - 我会看到一个错误(✕ - "无法匹配任何路由。URL段:'dog'"。我期望能看到狗和鸟)

为什么会这样呢?如何修复我的代码以便显示精确的链接描述?

PLNKR

相关或不相关 - 我认为这与清除辅助路线有关(通过routerLink传递null没有帮助。- 参见PLNKR2)。


5
鸟儿看到狗后,会飞走。你应该查一下。 - Poul Kruijt
我记得以前有一个类似的问题,还有赏金。那是你吗? - eko
@echonax 没有。但是我从一个在线不工作的 plnkr 中获得了一般想法。 - Royi Namir
1个回答

5
我修复了Plunker。这里是路由部分。通过阅读路由测试,我理解当您需要在两个出口同时导航时,请仅使用出口。对于主要出口,只需使用“primary”。https://plnkr.co/edit/2fvbGnepD5tGaeYb8DKK?p=preview
  <li><a [routerLink]="['']">None</a></li>
  <li><a [routerLink]="[{outlets: {primary: 'dog', under: null}}]">Only Dog </a></li>
  <li><a [routerLink]="[{outlets: {primary: null, under: ['bird']}}]">Only Bird</a></li>
  <li><a [routerLink]="[{outlets: {primary: ['dog'], under: ['bird']}}]">Dog & Bird</a></li>

完美。谢谢。 - Royi Namir
我有一个与出口相关的问题,请您帮忙看一下吗?链接 - Royi Namir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接