This article will take you through the routing (Route) in Angular. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.
Angular Routing (Route)
We can understand the Detailed explanation of Route routing in Angular as a view object that controls the state of the entire application. Each application There is a Detailed explanation of Route routing in Angular; another function of the Detailed explanation of Route routing in Angular is to assign a unique URL to each view. This URL can be used to jump between applications to a specific view state. A single-page application is actually a collection of view states.
Related tutorial recommendations: "angular tutorial"
Single-page application (SPA)
A single-page application is the homepage The page is only loaded once and does not refresh repeatedly. It is an application that only changes part of the content of the page. Angular applications are single-page applications that use Detailed explanation of Route routing in Angulars in Angular to change the content of the page based on user operations without reloading the page. A single-page application can be understood as a collection of view states.
Routing object
Routes array
The Detailed explanation of Route routing in Angular needs to be configured first Have routing information, and use the RouterModule.forRoot method to configure the Detailed explanation of Route routing in Angular. When the browser's URL changes, the Detailed explanation of Route routing in Angular looks up the corresponding Route and decides which component to display based on that.
Basic configuration:
const appRoutes: Routes = [ { path: 'common/a', component: AComponent }, { path: 'common/b/:id', component: BComponent }, { path: '**', component: NotFoundComponent}, // 定义通配符路由 ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], ... })
RouterOutlet Router Outlet
RouterOutlet is a directive from the routing module, its usage is similar to a component. It acts as a placeholder to mark a location in the template where the Detailed explanation of Route routing in Angular will display the component to be displayed at this outlet.
<h1 id="组件的内容显示在-Detailed-explanation-of-Route-routing-in-Angular-outlet-下方">组件的内容显示在(Detailed explanation of Route routing in Angular-outlet)下方</h1> <detailed explanation of route routing in angular-outlet></detailed>explanation of Route routing in Angular-outlet>
Router Router
Use the Router object to navigate.
constructor(private Detailed explanation of Route routing in Angular: Router) {} toAComponent() { this.Detailed explanation of Route routing in Angular.navigate(['/common/a']); // 或 this.Detailed explanation of Route routing in Angular.navigateUrl('common/a'); }
RouterLink Router link
Route link url must start with ‘/’.
<a [Detailed explanation of Route routing in AngularLink]="['/']">主页</a> <a [Detailed explanation of Route routing in AngularLink]="['/common/b', id]">B组件</a> <Detailed explanation of Route routing in Angular-outlet></Detailed explanation of Route routing in Angular-outlet>
ActivatedRoute activated route
The path and parameters of the currently activated route can be obtained through the routing service of ActivateRoute.
- Commonly used attributes:
Attributes Description url The Observable object of the routing path is a string array composed of various parts in the routing path. data An Observable, Contains the data object provided to the route. Also contains values resolved by the resolve guard. paramMap An Observable that contains a map object consisting of the required and optional parameters of the current route. Use this map to get a single value or multiple values from a parameter with the same name. queryParamMap An Observable containing a map object consisting of query parameters that are valid for all routes. Use this map to get a single value or multiple values from a query parameter.
在路由时传递数据
- 在查询参数中传递数据
/common/b?id=1&name=2 => ActivatedRoute.queryParamMap
- 在路由路径中传递数据
{path: /common/b/:id} => /commo/b/1 => ActivatedRoute.paramMap
- 在路由配置中传递数据
{path: /common/b, component: BComponent, data: {id:“1”, title: “b”}}
- 示例
constructor( private activatedRoute: ActivatedRoute ) { } ngOnInit() { // 从参数中获取 this.activatedRoute.queryParamMap.subscribe(params => { this.id = params.get('id'); }); // 或 // this.activated.snapshot.queryParamMap.get('id'); // 从路径中获取 this.activatedRoute.paramMap.subscribe(params => { this.id = params.get('id'); }); this.activatedRoute.data.subscribe(({id,title}) => { }); }
snapshot
: 参数快照,是一个路由信息的静态快照,抓取自组件刚刚创建完毕之后,不会监听路由信息的变化。如果确定一个组件不会从自身路由到自身的话,可以使用参数快照。
subscribe
: 参数订阅,相当于一个监听器,会监听路由信息的变化。
重定向路由
在用户访问一个特定的地址时,将其重定向到另一个指定的地址。
配置重定向路由:
// 当访问根路径时会重定向到 home 路径 const appRoutes: Routes = [ { path: '', redirectTo: 'home', pathMatch: 'full'}, { path: 'home', component: HomeComponent} ];
子路由
子路由配置语法:
const appRoutes: Routes = [ { path: 'home', component: HomeComponent, children: [ { path: '', component: AComponent}, { path: 'b', component: BComponent} ] }, ];
辅助路由
辅助路由又兄弟路由,配置语法:
// 路由配置 {path: 'xxx', component: XxxComponent, outlet:'xxxlet'}, {path: 'yyy', component: XxxComponent, outlet:'yyylet'} // 使用 <Detailed explanation of Route routing in Angular-outlet></Detailed explanation of Route routing in Angular-outlet> <Detailed explanation of Route routing in Angular-outlet name="xxxlet"></Detailed explanation of Route routing in Angular-outlet> // 链接 <a [Detailed explanation of Route routing in AngularLink]="['/home',{outlets:{xxxlet: 'xxx'}}]">Xxx</a>
当点击Xxx链接时,主插座会显示’/home’链接所对应的组件,而xxxlet插座会显示xxx对应的组件。
路由守卫(guard)
CanActivate/CanActiveChild:处理导航到某路由的情况
当用户不满足这个守卫的要求时就不能到达指定路由。
export class DemoGuard1 implements CanActivate { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { ... return true; } }
CanDeactivate:处理从当前路由离开的情况
如果不满足这个守卫的要求就不能离开该路由。
// 泛型中 AComponent 代表要守卫的组件。 export class DemoGuard2 implements CanDeactivate<AComponent> { canDeactivate(component: AComponent): boolean { // 根据 component 的信息进行具体操作 retturn true; } }
Resolve:在路由激活之前获取路由数据
在进入路由时就可以立刻把数据呈现给用户。
@Injectable() export AResolve implements Resolve<any> { resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { const id = route.paramMap.get('id'); // 可以根据路由中的信息进行相关操作 } }
最后,需要将路由守卫添加到路由配置中:
const appRoutes: Routes = [ { path: 'common/a', component: AComponent, canActivate: [DemoGurad1], canDeactivate: [DemoGuard2], resolve: {data: AResolve} }, { path: 'common/b/:id', component: BComponent }, { path: '**', component: NotFoundComponent}, // 定义通配符路由 ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], ... })
更多编程相关知识,请访问:编程入门!!
The above is the detailed content of Detailed explanation of Route routing in Angular. For more information, please follow other related articles on the PHP Chinese website!

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.

Introduction I know you may find it strange, what exactly does JavaScript, C and browser have to do? They seem to be unrelated, but in fact, they play a very important role in modern web development. Today we will discuss the close connection between these three. Through this article, you will learn how JavaScript runs in the browser, the role of C in the browser engine, and how they work together to drive rendering and interaction of web pages. We all know the relationship between JavaScript and browser. JavaScript is the core language of front-end development. It runs directly in the browser, making web pages vivid and interesting. Have you ever wondered why JavaScr


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

SublimeText3 English version
Recommended: Win version, supports code prompts!

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver Mac version
Visual web development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.
