Angular2 路由 - 当路由更改时保持组件的状态[重复]

2024-04-05

我有一个应用程序,其视图位于路由后面,我需要能够从路由更改时的位置继续,但返回后,组件处于初始状态。

有什么办法可以保持组件的状态吗?


update 2

现在已针对新路由器修复了这个问题(Angular 2.3)https://github.com/angular/angular/pull/13124 https://github.com/angular/angular/pull/13124它允许提供自定义重用策略。

有关示例,另请参阅https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

角度文档https://angular.io/api/router/RouteReuseStrategy https://angular.io/api/router/RouteReuseStrategy

update 2这个答案仅适用于很久以前停产的路由器版本。

See https://angular.io/docs/ts/latest/guide/router.html#!#guards https://angular.io/docs/ts/latest/guide/router.html#!#guards了解如何在当前路由器中执行此操作。

original

如果你的组件实现了CanReuse https://angular.io/docs/ts/latest/api/router/CanReuse-interface.html并返回true from

routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) {
  return true;
}

然后组件将被保留并重用,而不是被销毁和重新创建。

另一种方法是将数据保存在共享服务中,并在重新创建组件时从那里获取它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular2 路由 - 当路由更改时保持组件的状态[重复] 的相关文章

  • 如何在 Angular 单元测试中创建假 NgForm 对象?

    我有一个带有如下模板的组件 Template
  • 在请求标头中设置 Cookie Angular2

    我是 angular2 的新手 我的服务器 spring 在其响应标头中使用 set cookie 值来响应身份验证 如何将该 cookie 设置为下一次 API 调用的请求标头 我搜索了很多 但找不到合适的解决方案 作为http get
  • Webpack 在 Angular 的 ng 服务中的作用

    我是 Angular 的新手 想知道当我们为应用程序提供服务时 Webpack 在幕后扮演什么角色 在最初的印象中 我开始知道 webpack 是一个构建和打包工具 它将所有必需的 JS 文件分组到单独的包中 然而 我无法找到 webpac
  • 发生未处理的异常:工作区中未设置配置“生产”

    您好 在 Angular 8 中创建了一个项目 最初它仅支持一种默认语言 US EN 然后我应用了本地化 在准备生产构建的本地化之前 我曾经给出以下命令 ng build prod base href Windchill com qiwkC
  • 无法在 Angular 4 中使用自定义主题

    我正在尝试在我的角度项目中使用我的自定义主题 它没有按预期工作 我收到以下错误 node modules css loader sourceMap false importLoaders 1 node modules postcss loa
  • 跨延迟加载路由创建共享模块

    我正在构建一个 Angular 11 应用程序并尝试创建一个SharedModule 我正在使用延迟加载 并希望避免在延迟加载的路由中多次加载公共模块 我创建了一个共享模块并将其导入到我的AppModule 根据我的理解 这个共享模块应该在
  • 如何在 TypeScript 中禁用/抑制库中的错误?

    我打开了一些编译器开关来报告代码中的更多问题 例如严格的空检查 但我在使用的库中遇到了数十个错误 例如 default xxx node modules angular core src util decorators d ts 11 5
  • 避免在 Angular 2+ 中嵌套订阅?

    我有2个端点 1 个端点来获取当前用户的日志 1 个端点来获取该用户的授权 实际上我使用 this user subscribe e gt this grants get e subscribe x gt console log x 但这是
  • Angular2:鼠标事件处理(相对于当前位置的移动)

    我的用户应该能够通过鼠标在画布中移动 或旋转 对象 当鼠标事件发生时 屏幕坐标用于计算与最后一个事件的增量 方向和长度 没什么特别的 mousedown 获取第一个坐标 mousemove 获取第n个坐标 计算deltaXY 按deltaX
  • 为什么 Angular 2 项目如此大 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在用 ng2 重写 ng1 项目 我们的 ng1 项目构建后大约有 8mb 我们对 ng2 的重写已经完成了大约四分之一 并且我
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • 415 不支持的媒体类型; Angular2 到 API

    我是 Angular 2 的新手 我面临着一个无法找到解决方案的问题 当我尝试从 Angular 2 发布到 API 时 我得到 415 不支持的媒体类型 角度2代码 onSubmit value any console log value
  • Angular 2 ngModel 不工作(仅限 javascript)

    所以我是 Angular2 javascript 的新手 我能够通过 5 分钟的 Angular 教程制作一个简单的 Hello world 我对 Angular2 的新变化很好奇 我开始阅读 Angular2 Js 文档 但我发现它不完整
  • 编辑角度材质的表格单元格填充

    当我使用开发人员工具检查该元素时 它显示零填充 但是当我查看它并将鼠标悬停在它上面时 它非常清楚地在单元格内具有填充 我不知道这是从哪里来的 并且设置td padding 0 important 什么也没做 感知到的填充是由以下原因引起的d
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将
  • 创建 AoT 兼容的服务工厂

    我正在尝试为缓存服务创建一个服务工厂 主要要求是每次可以使用不同的字符串实例化单个服务 最终的结果会有多个cache每个服务都由唯一定义databaseName 每个缓存可以有一个或多个stores也由唯一定义storeName 其他服务将
  • Angular 6 - 找不到模块“@angular-devkit/build-angular”

    更新到 Angular 6 0 1 后 出现以下错误ng serve Could not find module angular devkit build angular from home Projects myProjectName E
  • 如何禁用 ng2-dragula 上的某些元素的拖动

    我想在顶部显示名称组并取消其上的拖动事件 如何禁用移动某些元素 例如该组名称位于顶部 我的代码是 dragulaService drag subscribe value gt console log drag value 0 我的模板 di
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问

随机推荐

  • 如何让用户选择适用于 Safari 浏览器

    我有这个 html 结构 ol class linenums li class L0 code span span code li ol 代码之前有行号 通过选择代码 我使用此 css 以便仅选择代码而不选择行号 ol linenums l
  • git服务器复制

    我们正在使用 git 进行多站点项目 并且仓库和团队都大幅增长 因此 远程站点正在遭受痛苦 我想向远程站点添加新的 git 服务器 以减少 git 服务器上的负载并使下载速度更快 但是我不确定如何保持这些同步 有什么办法可以原子地复制 gi
  • 键盘位置遮挡了 EditText 下方的视图,希望保持可见

    我的活动基本上是一个长形式的输入字段 在每一行上 我想在每个 EditText 下方显示一个 TextView 作为提示文本 并且我希望 TextView 在用户输入数据时始终保持可见 不幸的是 软键盘掩盖了提示文本 并且总是将其自身定位在
  • 从富文本框控件获取当前滚动位置?

    我在互联网上进行了广泛的搜索 看到了很多这样的问题 但我还没有看到真正的答案 我有一个富文本框控件 其中有很多文本 该控件中有一些法律信息 默认情况下 接受 按钮被禁用 我想检测滚动事件是否垂直滚动条的位置位于底部 如果它位于底部 请启用该
  • strtotime() 的结果是否会根据时区而改变?

    I used strtotime datetime 在 PHP 中将文本日期时间描述转换为 Unix 时间戳 参见下面的代码 datetime 2012 04 17 00 00 00 timestamp strtotime datetime
  • 使用 Enter 按键事件和鼠标单击触发提交按钮

    我是一个完全的初学者 正在使用 Just do it 和以项目为中心的路线学习前端 我的网络应用程序的工作原理基本上与待办事项列表类似 我认为这是因为我对同一个元素有两次 getElementById 这最初有效 add idea to l
  • Kendo Grid - 它自己的加载指示器

    Kendo grid在网格加载 分页 排序时自动提供自己的Loading指示器 它运行良好 但我不希望显示 隐藏这个内置加载指示器 如何禁用此功能 请建议我 谢谢 维诺斯 很简单 用CSS隐藏就可以了 您的选择器需要比内置 Kendo 类更
  • 如何在 C# 中使 winforms 进度条垂直移动?

    我正在开发 WinForms Jukebox 我想要一个垂直的进度条来控制音量 有谁知道这是怎么做到的吗 我不知道我会使用进度条control音量 但要display您可以使用用户绘制的控件来调整音量级别 或者您可以仅使用背景颜色调整标签的
  • 如何在 angular2 中访问父组件中的子组件 HTML 元素值?

    我使用下面的代码在父组件的按钮单击期间访问父组件中的子组件 HTML 元素值 子组件 ts Component selector child component template
  • 关于转向多层 Delphi 架构的建议

    我们有一个与 Firebird 紧密相关的相对较大的应用程序 存储过程 视图等 我们现在收到很多支持其他数据库的请求 我们还希望将很多功能从客户端转移到服务器 现在似乎是迁移到 3 4 层架构的好时机 我们已经了解了 DataSnap 20
  • 如何将变量从 Express.js 传递到 Angular11 通用 SSR

    简单的问题 我们如何从expressjs传递到角度通用HTML组件或主应用程序index html变量 比如从expressjs到ejs或pug app get req res gt res render index req messsag
  • Sublime Text 2 突出显示装订线

    默认情况下 当插入符号位于 Sublime Text 2 中的行号 装订线区域时 该行会突出显示 我怎样才能将其关闭 我看到隐藏装订线的选项 但我希望行号可见 谢谢 要关闭行突出显示 请转到preferences gt settings U
  • Phonegap 页面旋转错误,在横向模式下显示为纵向

    我有一个 简单的 网页打包在phonegap 应用程序中 如果我启动应用程序 它会以纵向显示页面 横向页面宽度 所以文本从左下到左上开始 右侧有一个空白 页面应该在此处结束 这是我所看到的 在我的中支持的方向是横向左和右 Info plis
  • 是否可以使用 XSLT 跳过层次结构中的级别?

    层次结构采用 XML 格式 我使用 XSLT 来转换数据 例如 如果层次结构有 4 个级别 并且我想跳过中间的一个级别 例如第 3 级 Level 1 Level 2 Level 3 Skip this level Level 4 Leve
  • 仅使用 CSS 的最大高度和最大宽度

    我的第一篇文章在这里 我使用 div 以相同的比例 180wx170h 裁剪缩略图 在处理肖像和风景图像时 我陷入了困境 如果我使用它 这对于肖像风格的图像来说很好 crop img max height 170px width auto
  • 为 C# 应用程序制作安装程序并将 .NET Framework 安装程序包含到安装程序中

    我已经完成了 C 应用程序 但有一个小问题 当我尝试在另一台 PC 上运行应用程序时 我始终需要安装 NET Framework 4 0 有什么办法可以使其工作而无需从互联网安装框架吗 我之前尝试过创新设置 http www jrsoftw
  • JVM跳转指令的偏移量怎么会是32768呢?

    在写一个回答有关 JVM 字节码偏移量的问题 https stackoverflow com a 30240357 3182664 我注意到 javac 的行为和生成的类文件中有一些我无法解释的内容 当编译这样的类时 class FarJu
  • C++/Fortran 中贝塞尔函数的集成 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在 Fortran 或 和 C 中对包含贝塞尔函数的方程进行从 0 到 无穷大 的数值积分 我在matlab中做了 但对于较大的输入和特
  • 设置 FieldRenderer 的 Item 或 DataSource 属性的好方法是什么?

    场景是我有很多 FieldRenderer 这些应该从不同的地方输出数据 一些来自项目 X 另一些来自项目 Y 并且应该输出项目 Z 的属性 假设我有公共财产ItemX我想从中输出一个属性 以下任何一个都可以 但我没有得到他们中任何一个的输
  • Angular2 路由 - 当路由更改时保持组件的状态[重复]

    这个问题在这里已经有答案了 我有一个应用程序 其视图位于路由后面 我需要能够从路由更改时的位置继续 但返回后 组件处于初始状态 有什么办法可以保持组件的状态吗 update 2 现在已针对新路由器修复了这个问题 Angular 2 3 ht