为了解决这个问题,我们可以使用订阅路由事件的方式来保存 ActivatedRouteSnapshot 的状态。具体实现如下:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
private snapshotCache: any;
constructor(
private route: ActivatedRoute,
private router: Router
) { }
ngOnInit() {
this.router.events.subscribe((event) => {
if (event instanceof NavigationEnd) {
this.snapshotCache = this.route.snapshot;
}
});
}
getSnapshot() {
return this.snapshotCache;
}
}
在这个示例中,我们在 ngOnInit 中订阅了路由事件,并在 NavigationEnd 事件发生时保存了当前的 ActivatedRouteSnapshot。然后,我们可以通过调用 getSnapshot 方法来获取保存的 ActivatedRouteSnapshot 对象。这样,我们就能够在路由事件之间保留 ActivatedRouteSnapshot 的状态了。