角4中ActivatedRouteSnapshot
和ActivatedRoute
的区别是什么?我的理解是ActivatedRouteSnapshot
是ActivatedRoute
的子元素,也就是说ActivatedRoute
包含ActivatedRouteSnapshot
.
顺便说一句,我试着在谷歌上搜索这个问题的答案,但我没有发现任何搜索结果是可以理解的.
非常感谢.
角4中ActivatedRouteSnapshot
和ActivatedRoute
的区别是什么?我的理解是ActivatedRouteSnapshot
是ActivatedRoute
的子元素,也就是说ActivatedRoute
包含ActivatedRouteSnapshot
.
顺便说一句,我试着在谷歌上搜索这个问题的答案,但我没有发现任何搜索结果是可以理解的.
非常感谢.
因为ActivatedRoute
、can be reused、ActivatedRouteSnapshot
是表示ActivatedRoute
中的a particular version的不可变对象.它将所有与ActivatedRoute
相同的属性公开为普通值,而ActivatedRoute
将它们公开为可观察的.
以下是实施中的 comments :
export class ActivatedRoute {
/** The current snapshot of this route */
snapshot: ActivatedRouteSnapshot;
如果路由重用了一个组件,并且没有创建新的激活路由,那么对于相同的ActivatedRoute
,您将拥有两个版本的ActivatedRouteSnapshot
.假设您具有以下路由配置:
path: /segment1/:id,
component: AComponent
现在导航到:
/segment1/1
你将在activatedRoute.snapshot.params.id
as 1
中拥有参数.
现在导航到:
/segment1/2
您将得到activatedRoute.snapshot.params.id
号中的参数为2
号.
您可以通过实现以下内容来查看它:
export class AComponent {
constructor(r: ActivatedRoute) {
r.url.subscribe((u) => {
console.log(r.snapshot.params.id);
});