当前位置: 首页 > 知识库问答 >
问题:

扩展角框架类RouteReuseStrategy时出错

酆高翰
2023-03-14

我的问题有两个方面。要解决的错误是,当我使用自定义路由重用策略时,当我使用implements重写angular路由器类RouteReuseStrategy时,该策略不会被触发,当我使用extends关键字时,我会出现以下异常,

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

export class CustomRouteReuseStrategy extends RouteReuseStrategy {

shouldDetach(route: ActivatedRouteSnapshot): boolean { return false; }

store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {}

shouldAttach(route: ActivatedRouteSnapshot): boolean { return false; }

retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle { return null ; }

shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    console.log("inside shouldReuseRoute...");
  return future.routeConfig === curr.routeConfig ;
}

我的生成设置的详细信息:

>

  • 使用gulp编译

    gulp.task(“compile”,()=>{let tsResult=gulp.src(“app/**/*.ts”).pipe(sourcemaps.init()).pipe(tsc(tsProject));返回tsResult.js.pipe(sourcemaps.write(“.”,{sourceroot:'/app'}).pipe(gulp.dest(“build/app”));

    “@Angular/编译器”:“~4.3.1”,

    “@棱角/芯”:“~4.3.1”,

    “@Angulation/Forms”:“~4.3.1”,

    “@Angular2-Material/Tabs”:“^2.0.0-alpha.8-2”,

    “@ng-bootstrap/ng-bootstrap”:“^1.0.0-alpha.9”,

    “Angular2-in-memory-web-api”:“0.0.20”,

    “ng2-datetime-picker”:“^0.9.8”,

    “ngx-bootstrap”:“^2.0.0-beta.8”,

    “反射-元数据”:“^0.1.3”,

    },

    “DevDependencies”:{

    “并发”:“^3.5.1”,

    “tslint”:“~5.8.0”,

    “打字稿”:“~2.6.1”,

    “类型”:“^2.1.1”,

    "compilerOptions": {
    
    "outDir": "build/app",
    
    "target": "es5",
    
    "module": "system",
    
    "moduleResolution": "node",
    
    "sourceMap": true,
    
    "emitDecoratorMetadata": true,
    
    "experimentalDecorators": true,
    
    "removeComments": false,
    
    "noImplicitAny": false
    
    },
    
     "exclude": [
    
    "gulpfile.ts",
    
    "node_modules"
    

    我浏览了堆栈溢出查找此异常的解决方案。每一次讨论都表明在类层次结构的顺序上存在一些问题,在我的例子中,我使用的是在webpack angular cli项目中100%工作正常的angular framework类。

    谢谢你抽出时间。

  • 共有1个答案

    谷梁承宣
    2023-03-14

    问题出在我的工作区结构上。我更新了package.json,使其使用angular Version4.3.0,并运行npm install将其下载到node_modules文件夹。但是gulp build是从另一个node_modules文件夹读取的,它读取的是angular 2版本,导致了这个问题。当我用angular 4版本更新实际的node_modules文件夹时,customRouteReuseStrategy开始工作。

    谢谢,

     类似资料:
    • 第十三章介绍了如何开发一个Web框架,通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统,但是一个好的框架需要一些方便的辅助工具来快速的开发Web,那么我们这一章将就如何提供一些快速开发Web的工具进行介绍,第一小节介绍如何处理静态文件,如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点,第二小节介绍如何利用前面介绍的session来进行用户登录处理,第三小

    • 本文向大家介绍Thinkphp 框架扩展之类库扩展操作详解,包括了Thinkphp 框架扩展之类库扩展操作详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Thinkphp 框架扩展之类库扩展操作。分享给大家供大家参考,具体如下: 类库扩展 ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。 公共类库 公共类库通常是

    • 本文向大家介绍thinkphp5框架扩展redis类方法示例,包括了thinkphp5框架扩展redis类方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkphp5框架扩展redis类方法。分享给大家供大家参考,具体如下: 笔者在开发时发现,thinkphp5的自带redis类方法,只有简单的读取缓存、写入缓存的基本方法,远不能满足我们业务的需求。redis本身支持五种数据

    • 本文向大家介绍thinkphp框架类库扩展操作示例,包括了thinkphp框架类库扩展操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkphp框架类库扩展操作。分享给大家供大家参考,具体如下: 官方文档 http://document.thinkphp.cn/manual_3_2.html#lib_extend 自定义命名空间 在项目的application->common

    • 本文向大家介绍Laravel框架中扩展函数、扩展自定义类的方法,包括了Laravel框架中扩展函数、扩展自定义类的方法的使用技巧和注意事项,需要的朋友参考一下 一、扩展自己的类 在app/ 下建立目录 libraries\class  然后myTest.php 类名格式 驼峰 myTest 在 app/start/global.php 用 make 载入 二、扩展自己的函数 在app/ 下建立目录

    • Swoole扩展 到GitHub首页下载Swoole扩展源码,地址:https://github.com/swoole/swoole-src 下载后按照标准的PHP扩展编译方式进行编译和安装。一般是 phpize ./configure make install 编译安装完后,修改php.ini加入extension=swoole.so开启swoole扩展。也可以通过dl('swoole.so'