高性能网站建设指南 书,wordpress 电台网站,邯郸恋家网,长沙网站制作策划Angular中的ActivatedRoute和Router解释
在Angular中#xff0c;ActivatedRoute和Router是两个核心的路由服务。他们都提供可以用来检查和操作当前页面路由信息的方法和属性。
ActivatedRoute
ActivatedRoute是一个保存关于当前路由状态#xff08;如路由参数、查询参数以…Angular中的ActivatedRoute和Router解释
在Angular中ActivatedRoute和Router是两个核心的路由服务。他们都提供可以用来检查和操作当前页面路由信息的方法和属性。
ActivatedRoute
ActivatedRoute是一个保存关于当前路由状态如路由参数、查询参数以及其他数据的对象。 它可以让开发人员从路由器中访问路由参数和查询参数。
ActivatedRoute是路由事件数据的载体。 这包括在导航期间收集的静态和动态段以及查询参数、Fragment等等。
例如对于这个路由
{ path: product/:id, component: ProductDetailComponent }通过获取ActivatedRoute我们可以轻松地访问id值
import { Component } from angular/core;
import { ActivatedRoute } from angular/router;Component({selector: app-product-detail,template: Product Details Component
})export class ProductDetailComponent implements OnInit {constructor(private route: ActivatedRoute) {}ngOnInit() {const id this.route.snapshot.paramMap.get(id);// ...}
}在上面的代码示例中ActivatedRoute通过注入该服务作为构造函数的参数而获取。接下来我们只需使用快照对象即this.route.snapshot就可以快速访问路由参数。要获取参数的特定值可以使用get方法访问params属性该方法采用一个字符串参数并返回一个字符串
const id this.route.snapshot.paramMap.get(id);这里的加号意味着我们将结果转换为数字类型。
另一种访问路由参数的方法是通过订阅paramMap可观察值。subscribe方法定义给observable带来副作用就像任何** RxJS **observable一样:
this.route.paramMap.subscribe(params {const id params.get(id);// ...
});这种方式允许动态更改URL。你的组件不需要重新创建。
Router
Router通过向前和向后导航和路由装置提供了一种明显且简单的编程API同时仍然保留完全配置的强大能力。
路由器是一个抽象的概念它用于选择输入URL并将其转换为经过测试的规则来获取特定组件。 在Angular中路由器是NgModule中的引导项之一。 路由器设置可能看起来非常困难但是一旦了解了基本情况它们就会感到自然。
基本导航
首先我们根据常规用法配置Routes数组
// app-routing.module.ts file
import { Routes, RouterModule } from angular/router;
import { HomeComponent } from ./home/home.component;
import { ProductListComponent } from ./product-list/product-list.component;
import { ProductDetailComponent } from ./product-detail/product-detail.component;const routes: Routes [{ path: , component: HomeComponent },{ path: products, component: ProductListComponent },{ path: products/:id, component: ProductDetailComponent }
];NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule]
})
export class AppRoutingModule { }我们设定了三个路由空路径(主页)产品列表和特定ID的产品。 每个路径都与对应的组件相关联。
然后我们在模板或组件类中安排具有相应路由声明的链接
!-- home.component.html --
a routerLink/Home/a
a routerLink/productsProduct List/a!-- product-list.component.html --
ulli *ngForlet product of productsa [routerLink][/products, product.id]{{ product.name }}/a/li
/ul!-- product-detail.component.html --
h2Product Detail/h2
p{{ product }}/p在上面的所有代码示例中我们使用了routerLink指令完成路由导航。现在当用户点击链接时路由器会根据路径加载相应的组件并在指令的位置动态渲染该组件。