詳解Angular之路由基礎(chǔ)
一、路由相關(guān)對象
Router和RouterLink作用一樣,都是導(dǎo)航。Router是在Controller中用的,RouterLink是在模版中用到。
二、路由對象的位置
1、Routes對象
配置在模塊中。Routes由一組配置信息組成,每個(gè)配置信息至少包含兩個(gè)屬性,Path和Component。
2、RouterOutlet
在模版中
3、RouterLink
指令,在模版中生成鏈接改變URL
4、Router
在Controller中,調(diào)用Router對象的navigate方法,路由切換。
5、ActivatedRoute
路由時(shí)候通過URL傳遞數(shù)據(jù),數(shù)據(jù)會(huì)保存在ActivatedRoute對象中。
三、路由配置
使用ng new --routing參數(shù)時(shí)候會(huì)多生成出來一個(gè)app-routing.module.ts文件
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; const routes: Routes = []; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
會(huì)自動(dòng)imports到app.module.ts中。
生成兩個(gè)組件home組件和component組件。
const routes: Routes = [ {path: '', component : HomeComponent}, //路徑為空 {path: 'product', component: ProductComponent} ];
注意:
1、path路徑配置不能以斜杠開頭,不能配置成path:'/product'。
因?yàn)锳ngular路由器會(huì)解析和生成url,不用/開頭是為了在多個(gè)視圖之間導(dǎo)航時(shí)能自由的使用相對路徑和絕對路徑。
2、在模版中寫路徑時(shí),必須用/開頭。
因?yàn)橛眯备芗?表示要導(dǎo)航到根路由(/)還是子路由(./)。
/就是導(dǎo)航到根路由,從配置根路由那一層找。
<a [routerLink]="['/']">主頁</a>
3、在<router-outlet>下面顯示組件內(nèi)容
4、routerLink參數(shù)是一個(gè)數(shù)組而不是字符串
因?yàn)樵诼酚蓵r(shí)候可以傳遞參數(shù)。
四、代碼中通過Router對象導(dǎo)航
模版上加一個(gè)按鈕
<input type="button" value="商品詳情" (click)="toProductDetails()">
controller中使用router.navigate導(dǎo)航。
navigate參數(shù)和routerLink參數(shù)配置一樣。
import { Component } from '@angular/core'; import { Router } from '@angular/router'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private router:Router){ } toProductDetails(){ this.router.navigate(['/product']); } }
點(diǎn)按鈕和點(diǎn)鏈接效果一樣。
五、配置不存在的路徑
生成code404組件顯示頁面不存在。
路由匹配先匹配者優(yōu)先,所以**通配符路由要放最后。
const routes: Routes = [ { path: '', component: HomeComponent }, //路徑為空 { path: 'product', component: ProductComponent }, { path: '**', component: Code404Component } ];
六、重定向路由
一個(gè)地址重定向到另一個(gè)指定組件
www.aaa.com => www.aaa.com/products
www.aaa.com/x => www.aaa.com/y 用戶可能已經(jīng)收藏了x地址。
用重定向路由
const routes: Routes = [ { path: '', redirectTo : 'home', pathMatch:'full' }, //路徑為空 { path: 'home', component: HomeComponent }, { path: 'product', component: ProductComponent }, { path: '**', component: Code404Component } ];
七、在路由時(shí)候傳遞數(shù)據(jù)
有3種方式
1、在查詢參數(shù)中傳遞數(shù)據(jù)
2、在路由路徑中傳遞數(shù)據(jù)
定義路由路徑時(shí)就要指定參數(shù)名字,在實(shí)際路徑中攜帶參數(shù)。
3、在路由配置中傳遞數(shù)據(jù)
以上就是詳解Angular之路由基礎(chǔ)的詳細(xì)內(nèi)容,更多關(guān)于Angular之路由基礎(chǔ)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
AngularJS 如何在控制臺(tái)進(jìn)行錯(cuò)誤調(diào)試
本文主要介紹AngularJS 如何在控制臺(tái)進(jìn)行錯(cuò)誤調(diào)試,還不錯(cuò),分享給大家,希望給大家做一個(gè)參考。2016-06-06angular 基于ng-messages的表單驗(yàn)證實(shí)例
本篇文章主要介紹了angular 基于ng-messages的表單驗(yàn)證實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05Angular ng-repeat 對象和數(shù)組遍歷實(shí)例
這篇文章主要介紹了Angular ng-repeat對象和數(shù)組遍歷的相關(guān)資料,并附代碼示例,需要的朋友可以參考下2016-09-09深究AngularJS如何獲取input的焦點(diǎn)(自定義指令)
本篇文章主要介紹了AngularJS如何獲取input的焦點(diǎn)(自定義指令),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06AngularJS1.X學(xué)習(xí)筆記2-數(shù)據(jù)綁定詳解
本篇文章主要介紹了AngularJS1.X學(xué)習(xí)筆記2-數(shù)據(jù)綁定詳解,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04Angular項(xiàng)目里ngsw-config.json文件作用詳解
這篇文章主要為大家介紹了Angular項(xiàng)目里ngsw-config.json文件作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11妙用Angularjs實(shí)現(xiàn)表格按指定列排序
使用AngularJS的過濾器,可以很容易的實(shí)現(xiàn)在表格中,點(diǎn)擊某一列標(biāo)題進(jìn)行排序,實(shí)現(xiàn)代碼也很簡單,下面小編給大家分享angularjs實(shí)現(xiàn)表格按指定列排序的實(shí)現(xiàn)代碼,需要的的朋友參考下吧2017-06-06Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
ng-template 是用來定義模板的,當(dāng)使用ng-template定義好一個(gè)模板之后,可以用ng-container和templateOutlet指令來進(jìn)行使用。這篇文章給大家介紹了Angular中的ng-templateangular及使用 ngTemplateOutlet 指令的方法,需要的朋友參考下吧2018-08-08