0

我正在使用 Angular 12,并且我的以下路由重用策略运行良好:

export class RoutingReuseStrategy implements RouteReuseStrategy {
handles: { [key: string]: DetachedRouteHandle } = {};

shouldDetach(route: ActivatedRouteSnapshot): boolean {
    return route.data.shouldReuse || false;
}

store(route: ActivatedRouteSnapshot, handle: {}): void {
    if (route.data.shouldReuse) {
        this.handles[route.routeConfig.path] = handle;
    }
}

shouldAttach(route: ActivatedRouteSnapshot): boolean {
    return !!route.routeConfig && !!this.handles[route.routeConfig.path];
}

retrieve(route: ActivatedRouteSnapshot): {} {
    if (!route.routeConfig) return null;
    return this.handles[route.routeConfig.path];
}

shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    return future.data.shouldReuse || false;
}}

在我重用的组件中,我订阅了这样的查询参数:

    constructor(private route: ActivatedRoute) {}


ngOnInit() {
    this.route.queryParams.subscribe(queryParams => {
        // do something with queryParams
    });
}

我的问题是,该订阅仅在首次加载组件时触发一次。如果路由再次与新的查询参数一起使用,则 ActivatedRoute 不会更新。

有什么方法可以使用 RouteReuseStrategy 并且仍然能够在重用组件中订阅新的查询参数(或路由参数)?

我确实有一个使用路由器事件订阅的解决方法,它允许访问带有新参数的 URL。但如果有一种方法可以使用 queryParams 订阅,我想我更愿意这样做。

4

0 回答 0