Angular的RouteReuseStrategy与LazyLoadedModule搭配使用时,在路由到另一个模块后,MainLayout没有消失且[routerLinks]不起作用
创始人
2024-10-24 09:31:04
0

要解决这个问题,需要在应用程序中实现自定义的RouteReuseStrategy。使用自定义的RouteReuseStrategy可让我们决定在路由时是否应重复使用组件实例。我们可以使用RouteReuseStrategy接口中的shouldDetach,store,shouldAttach和retrieve方法将路由元数据存储在内存中,并在下次访问该路由时重新使用它们。

以下是解决此问题的代码示例:

import {RouteReuseStrategy, DetachedRouteHandle} from '@angular/router';

export class CustomRouteReuseStrategy extends RouteReuseStrategy {

  private handlers: {[key: string]: DetachedRouteHandle} = {};

  shouldDetach(route: import("@angular/router").ActivatedRouteSnapshot): boolean {
    return !!route.data.reuse;
  }

  store(route: import("@angular/router").ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
    this.handlers[route.url.join('/')] = handle;
  }

  shouldAttach(route: import("@angular/router").ActivatedRouteSnapshot): boolean {
    return !!this.handlers[route.url.join('/')];
  }

  retrieve(route: import("@angular/router").ActivatedRouteSnapshot): DetachedRouteHandle {
    if (!route.routeConfig || route.routeConfig.loadChildren || !this.handlers[route.url.join('/')]) {
      return null;
    }
    return this.handlers[route.url.join('/')];
  }

  shouldReuseRoute(future: import("@angular/router").ActivatedRouteSnapshot, curr: import("@angular/router").ActivatedRouteSnapshot): boolean {
    return future.routeConfig === curr.routeConfig;
  }
}

在应用程序的模块中,只需将CustomRouteReuseStrategy添加到providers数组中即可:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, RouteReuseStrategy } from '@angular/router';
import { CustomRouteReuseStrategy } from './custom-route-reuse-strategy';

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes)
  ],
  providers: [
    {

相关内容

热门资讯

黑科技真的!we辅助poker... 此外,数据分析德州(we辅助poker)辅助神器app还具备辅助透视行为开挂功能,通过对客户we辅助...
黑科技智能ai!aa扑克网上的... 黑科技智能ai!aa扑克网上的挂真的(智能ai)一直是有挂(有挂渠道)-哔哩哔哩;aa扑克网上的挂真...
黑科技新版!德扑之星软件怎么样... 黑科技新版!德扑之星软件怎么样(透视)确实是有挂(有挂黑科技)-哔哩哔哩;1.德扑之星软件怎么样 a...
黑科技计算!智星德州菠萝偷偷看... 黑科技计算!智星德州菠萝偷偷看牌功能(辅助挂)一贯是真的有挂(有挂脚本)-哔哩哔哩;小薇(透视辅助)...
黑科技好友房!wepoke透明... 1、黑科技好友房!wepoke透明挂辅助软件是真的吗(黑科技)原来存在有挂(有挂安卓版本)-哔哩哔哩...
黑科技教学!德扑赔率胜率计算(... 黑科技教学!德扑赔率胜率计算(辅助挂)原来真的有挂(有挂机制)-哔哩哔哩;德扑赔率胜率计算软件透明挂...
黑科技安装!wpk有透视辅助吗... 黑科技安装!wpk有透视辅助吗(ai代打)一直是真的有挂(有挂计算器)-哔哩哔哩;实战中需综合运用上...
黑科技线上!wpk透明挂(智能... 黑科技线上!wpk透明挂(智能ai)好像真的有挂(有挂靠谱)-哔哩哔哩;wpk透明挂软件透明挂更新新...
黑科技安卓版!微扑克ai机器人... 黑科技安卓版!微扑克ai机器人怎么回事(ai代打)起初是有挂(有挂输赢)-哔哩哔哩;致您一封信;亲爱...
黑科技最新!wepower透视... 黑科技最新!wepower透视辅助使用方法(透明挂)本然真的是有挂(有挂猫腻)-哔哩哔哩是一款可以让...