一、輔助路由語法
同時控制多個插座內容。
第一步:
模版上除了主插座,還需要宣告一個帶name屬性的插座
第二步:
路由配置中配置name為aux的插座上可以顯示哪些元件,比如顯示xxx和yyy元件。
第三步:
在導航時候,路由到某個地址時,輔助的插座上顯示哪個元件
二、例項
聊天功能可以在任何頁面(商品列表頁面,商品詳情頁面,主頁面等)使用。
第一步:在app元件的模版上在定義一個插座來顯示聊天皮膚。
<a [routerLink]="['/home']">主頁</a> <a [routerLink]="['/product',2]">商品詳情</a> <input type="button" value="商品詳情" (click)="toProductDetails()"> <router-outlet></router-outlet> <router-outlet name="aux"></router-outlet>
第二步:單獨開發一個聊天室元件,只顯示在新定義的插座上。
新建聊天元件並修改模版
ng g c chat
<textarea placeholder="請輸入聊天內容" n class="chat" ame="" id="" cols="30" rows="10"></textarea>
.chat{ background: green; height: 100px; width: 30%; float: left; box-sizing: border-box; }
修改home元件和product元件模版,包一層div並設定樣式
.product{ background: yellow; height: 100px; width: 70%; float: left; box-sizing: border-box; } .home{ background: red; height: 100px; width: 70%; float: left; box-sizing: border-box; }
配置路由決定聊天元件是否顯示
const routes: Routes = [ { path: '', redirectTo : 'home',pathMatch:'full' }, { path: 'chat', component: ChatComponent, outlet: "aux"},//輔助路由 { path: 'home', component: HomeComponent }, { path: 'product/:id', component: ProductComponent, children:[ { path: '', component : ProductDescComponent }, { path: 'seller/:id', component : SellerInfoComponent } ] }, { path: '**', component: Code404Component } ];
第三步:通過路由引數控制新插座是否顯示聊天皮膚
增加開始聊天和結束聊天按鈕
<!--The content below is only a placeholder and can be replaced.--> <a [routerLink]="['/home']">主頁</a> <a [routerLink]="['/product',2]">商品詳情</a> <input type="button" value="商品詳情" (click)="toProductDetails()"> <a [routerLink]="[{outlets: {aux: 'chat'}}]">開始聊天</a> <a [routerLink]="[{outlets: {aux: null}}]">結束聊天</a> <router-outlet></router-outlet> <router-outlet name="aux"></router-outlet>
效果:
點開始聊天,URL後面多了一個(aux:chat) :輔助路由aux插座路由路徑是chat,chat路徑對應顯示ChatComponent。
主路由可隨意切換,不影響輔助路由
http://localhost:4200/home(aux:chat)
http://localhost:4200/product/2(aux:chat)
擴充套件:如果想展示chat元件時候,主路由要跳到home元件上。
用priamry指定主路由路徑,因為主路由沒有名字。
<a [routerLink]="[{outlets: {primary: 'home' , aux: 'chat'}}]">開始聊天</a>
本文作者starof,因知識本身在變化,作者也在不斷學習成長,文章內容也不定時更新,為避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/9006227.html 有問題歡迎與我討論,共同進步。