AngularJS 4(七)【路由】
路由
通過 URL 對映到對應的功能實現,也就是不同的 URL 會渲染對應的元件。URL 的切換實際就是元件之間的切換。
簡單的路由入門
宿主頁面 – index.html
大多數帶路由的應用都要在 index.html
的 <head>
標籤下先新增一個 <base>
元素,來告訴路由器該如何合成導航用的URL。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Project</title>
<base href="/">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
</body>
</html>
路由配置檔案 – router.js
路由器需要先配置才會有路由資訊,用 RouterModule.forRoot
方法來配置路由器, 並把它的返回值新增到 AppModule
的 imports
陣列中。
import { RouterModule, Routes } from '@angular/router';
import { StudentsComponent } from '../components/students/students.component';
import { LoginComponent } from '../components/login/login.component';
const appRoutes: Routes = [
{path: 'login', component: LoginComponent},
{path: 'students', component: StudentsComponent},
]
export const RootRouter = RouterModule.forRoot(
appRoutes,
{ enableTracing: true } // <-- debugging purposes only
)
根元件 – app.component.html
路由切換時要把對應的元件輸出到對應的位置,該位置稱之為路由出口 <router-outlet></router-outlet>
一個模板中只能有一個未命名的 <router-outlet>
。 但路由器可以支援多個命名的路由出口。
<h1>app</h1>
<a routerLink="/login">Login</a>
<a routerLink="/students">Student</a>
<router-outlet></router-outlet>
根模組 – app.module.ts
import {RootRouter} from './router/root.router';
@NgModule({
imports: [
RootRouter
]
})
萬用字元路由
除路由配置表中的路由,瀏覽器訪問其它路由都會報錯。Angular 提供了一個萬用字元路由來攔截所有無效的路由,也就是所有不在路由配置表中的路由都會導航到該路由。
const appRoutes: Routes = [
{path: '**', component: PagenotfoundComponent}
]
重定向路由
重定向路由需要一個pathMatch
屬性,來告訴路由器如何用URL去匹配路由的路徑,否則路由器就會報錯。也就是說路由器應該只有在完整的URL等於”時才選擇 LoginComponent
元件,因此我們要把pathMatch
設定為’full’。
const appRoutes: Routes = [
{path: '', redirectTo: '/login', pathMatch: 'full'},
]
路由引數
路由配置表
const appRoutes: Routes = [
{path: 'students/:id/:name', component: StudentsComponent}
]
接收引數
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
@Component({
selector: 'app-students',
templateUrl: './students.component.html',
styleUrls: ['./students.component.css']
})
export class StudentsComponent implements OnInit {
constructor(private route: ActivatedRoute, private router: Router) { }
ngOnInit() {
//轉成物件
this.route.params.subscribe((params) => {
console.log(params);
});
//單個接收
this.route.snapshot.paramMap.get('name');
}
}
路由跳轉
this.router.navigate(['/students/10/admin']);
路由巢狀
路由配置表
const appRoutes: Routes = [
{
path: 'students',
component: StudentsComponent,
children: [
{path: 'get', component: GetComponent}
]
}
]
在 StudentsComponent
中要新增 <router-outlet></router-outlet>
相關文章
- angularJS 系列(七)---指令AngularJS
- 重溫AngularJS(十三)-- 路由AngularJS路由
- angularjs的深層路由AngularJS路由
- AngularJS教程七—— 框架概述AngularJS框架
- AngularJS學習日記(二)路由AngularJS路由
- AngularJS 4(三)【指令】AngularJS
- AngularJS 4(五)【管道】AngularJS
- 【轉載】AngularJS監聽路由變化AngularJS路由
- 走進AngularJs(七) 過濾器(filter)AngularJS過濾器Filter
- 4、angularJS過濾器AngularJS過濾器
- AngularJS 1.x系列:AngularJS過濾器(4)AngularJS過濾器
- 走進AngularJs(八) ng的路由機制AngularJS路由
- 4 11路由路由
- AngularJS 4(一)【搭建環境】AngularJS
- AngularJS 4(四)【HTTP 服務】AngularJSHTTP
- AngularJS 4(六)【依賴注入】AngularJS依賴注入
- Angular4+路由Angular路由
- AngularJS 4(二)【模版語法,元件】AngularJS元件
- AngularJS ui-router重新整理子頁面路由AngularJSUI路由
- AngularJS、 Angular 2、Angular 4 的區別AngularJS
- 4. laravel 路由(1)Laravel路由
- 【七牛雲】前端開發工程師 AngularJS(上海/北京)前端工程師AngularJS
- 關於angularjs中路由頁面強制更新的問題AngularJS路由
- 小米路由器4正式釋出 小米路由器4怎麼樣?路由器
- ASP.NET MVC下使用AngularJs語言(七):Cookie的使用ASP.NETMVCAngularJSCookie
- go的web框架gin的使用(七):多路由GoWeb框架路由
- vue學習筆記(七)---- vue中的路由Vue筆記路由
- 七天接手react專案 系列 —— react 路由React路由
- Angularjs製作簡單的路由功能簡單程式碼例項AngularJS路由
- 360路由器V4與小米路由4簡單體驗,百元路由器誰更好?路由器
- 第七彈-HTML4HTML
- AngularJs with Webpackv1 升級到 Webpack4AngularJSWeb
- 實驗4.浮動路由路由
- Angularjs——初識AngularJSAngularJS
- 【Gin-API系列】實現動態路由分組(七)API路由
- angular4學習記錄 — 路由Angular路由
- nodejs express 框架解密4-路由NodeJSExpress框架解密路由
- Vue Router 4與路由管理實戰Vue路由