2017-05-08 56 views
2

我見過一個例子,我有兩個<router-outlet>,其中只有一個具有name屬性 - 所以我做了一個小測試:在角4」刪除輔助路線

我有這樣的路由器映射:

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段:。「狗」我期待看到這兩個狗和鳥)

這是爲什麼?我該如何解決我的代碼,以便它能夠顯示確切的鏈接描述?

PLNKR

相關或不 - 我認爲它必須做一些與結算的AUX線(經routerLink空傳遞是沒有幫助 - 見PLNKR2

+4

鳥兒看到狗後,鳥會飛走。你應該看看那個 – PierreDuc

+0

我記得以前有過這樣的問題。是你嗎? – echonax

+0

@echonax nope。但是我確實從一個在線非工作的plnkr中獲得了總體思路。 –

回答

3

我固定plunker。 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> 
+0

**完美**。謝謝。 –

+0

[我有一個相關的](https://stackoverflow.com/questions/47857150/angular-how-can-i-activate-aux-route-with-lazy-loaded-module)與出口問題,你可以請有一個看? –