我是否必须取消订阅ActivatedRoute(例如参数)可观察量?

2023-12-25

我发现很多例子ActivatedRoute可观察到的像params or url已订阅但未取消订阅。

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.params
    // (+) converts string 'id' to a number
    .switchMap((params: Params) => this.service.getHero(+params['id']))
    .subscribe((hero: Hero) => this.hero = hero);
}
  • 路由对象和订阅是否会自动销毁并为每个组件创建重新创建?
  • 我是否需要关心取消订阅这些内容Observables?
  • 如果没有,您能解释一下中的ActivatedRoute对象树会发生什么吗?Router.routerState?

No

来自文档 https://angular.io/guide/router-tutorial-toh#observable-parammap-and-component-reuse :

当订阅组件中的可观察对象时,您几乎总是安排在组件被销毁时取消订阅。

有一个很少有例外的可观察到的情况,这是没有必要的。 ActivatedRoute 可观察量属于例外情况.

ActivatedRoute 及其可观察量与 Router 本身隔离。当不再需要路由组件时,路由器会销毁该组件,并且注入的ActivatedRoute也会随之消失。

无论如何,请随时取消订阅。这是无害的,而且绝不是一个坏习惯。

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

我是否必须取消订阅ActivatedRoute(例如参数)可观察量? 的相关文章

  • 单击上一页的按钮路由到该页面后如何刷新页面

    我有 2 个页面 一个主页和一个页面 2 当我单击主页上的按钮时 它会路由到 page2 现在 单击主页上的按钮后 当我到达第 2 页时 它应该刷新 因为我的项目中存在一些缓存问题 我在ngoninit上添加了window location
  • 从父组件调用的子组件内的 Angular 2 ng2-bootstrap 模式

    很难解释这一点 我有一个简单的 ng2 bootstrap 模式示例 我将其扩展为包含主页的 Boostrap 4 Jumbotron 示例模板 现在 ng2 bootstrap 模式不执行任何操作 我可以看到this childModal
  • 在 Angular 6 服务中获取当前路由参数的最佳方法是什么?

    我试图找出在 Angular 6 中获取当前路由参数的最佳方法是什么 目前我必须通过ActivatedRoute到服务的方法作为参数 然后在服务中使用它 export class MainComponent constructor priv
  • 如何在Angular2中正确使用依赖注入(DI)?

    我一直在试图弄清楚 DI 依赖注入在 Angular2 中是如何工作的 每次当我尝试将服务 或类注入我的组件时 我都会遇到很多问题 从不同的谷歌搜索文章中 我需要使用providers 在组件配置中 或者有时我需要使用 Inject 在我的
  • 使用 Observable 与 Immutable 进行变更检测

    所以我读了本文 http victorsavkin com post 110170125256 change detection in angular 2关于 Angular 2 变更检测 但读完之后我变得更加困惑 所以我开始阅读一些导致更
  • 渲染作为 Prop 传入的 Component

    我怎样才能渲染一个StyledComponent它是作为道具传入的吗 我正在传递一个Spinner组件到我的BarComponent作为渲染的道具 我尝试使用 this props icon in my BarComponent在下面的示例
  • 将 Backbone 结构转换为 TypeScript

    看看 Backbonejs 的实现扩展功能 http backbonejs org docs backbone html section 186 它表明它不是一个基本的原型扩展 当主干扩展直接转换为 TypeScript 类时 有些东西会停
  • Angular4 屏蔽输入中的字符而不更改其值

    如何屏蔽输入中除 Angular 4 中最后四个字符之外的所有字符 即显示 而不更改实际值 例如 输入文本框中的数字应类似于 1234 且值应为 7671234 使用指令 Directive selector stringHide expo
  • angular2 MdDialog 未显示为弹出窗口

    所以我尝试使用 MdDialog 来显示错误消息 不幸的是 它不是显示为弹出窗口 而是显示为页面底部的块 我需要查看或更改哪些内容才能使其正常工作 下面的代码 common modal component html h2 title h2
  • 在指令中动态添加 *ngIf

    如何动态地将 ngIf 添加到用属性指令修饰的元素 为了一个简单的实验 我尝试了这个 Directive selector lhUserHasRights export class UserHasRightsDirective implem
  • 使用属性和泛型类型获取“keyof”中项目的类型

    我想定义一个具有泛型类型的接口 该接口必须接受一个对象 其键作为 根字段名称 值作为对象数组 该数组定义一些子字段 其键作为子字段的名称 type 作为字段值的类型 像这样的东西 interface Inputs emails email
  • webpack TS2304 找不到名称“Map”、“Set”、“Promise”

    我有以下 webpack config js var path require path var webpack require webpack module exports entry ng2 auto complete path joi
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 如何在 Angular 4 中翻译 mat-paginator?

    你知道如何在 Angular 中翻译 每页项目 吗mat paginator标签 这mat paginator是材料设计中的一个元素 您可以使用MatPaginatorIntl为了这 威尔 豪厄尔制作 https github com an
  • 在 Typescript 中隐式创建一个元组

    有没有一种方法无需类型提示即可在 Typescript 中创建元组 如果我只是这样做 const tuple 1 2 元组的类型number 我能得到的最接近的单线是 const tuple number number 1 2 我错过了什么
  • Angular 2 - ng 构建与 webpack 构建

    我想了解构建和部署 Angular 2 Web 应用程序的最佳方法是什么 我最终需要将其作为 Web 捆绑资源提供给我的 dropwizard 应用程序 我试图了解是否应该保留 ng build 并使用它来生成我的 dist 文件夹 或者我
  • 如何声明具有可变数量属性的 TypeScript 接口?

    这是一个简单的问题 令我惊讶的是我在任何地方都找不到明确的答案 我正在制作一个 API 需要定义一个可以具有多个 字符串 属性的接口 但没有设置属性数量 也没有设置它们的名称 但它们都必须具有字符串值 因此以下所有对象都将与该类型匹配 sl
  • Angular 2 和 TypeScript 的承诺

    我正在尝试使用routerCanDeactivate我的应用程序中的组件的函数 简单的使用方法如下 routerCanDeactivate return confirm Are you sure you want to leave this
  • 为 Angular2 中的组件加载多个样式表

    我正在构建一个 angular2 应用程序 当我尝试为同一组件加载多个样式表时 我面临多个问题 这是我正在做的代码 import Component from angular core Component selector my tag t
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco

随机推荐

  • 在 Windows 上将 filesystem::path 转换为 char*

    The C 17 文件系统 https en cppreference com w cpp filesystem基于boost filesystem 我现在在 Windows 上使用 VS2017 include
  • sqlserver 中的 CONVERT 问题,出现 Msg 529 错误

    select CONVERT datetime value 103 from results 这个声明给了我一个错误 Msg 529 Level 16 State 2 Line 1 Explicit conversion from data
  • 如何检查进程是否属于当前用户?

    我正在尝试获取属于当前用户的进程的 PID 但我不知道如何检查进程所有者 这是我的代码 缺少用户的检查条件 uses TlHelp32 type TCardinalArray array of Cardinal function GetCu
  • 如何在tensorflow.js中获取/设置监督模型的权重?

    我想更改监督模型的权重 但更改权重后得到的结果完全相同 我究竟做错了什么 const model tf sequential model add tf layers dense model add tf layers dense model
  • 我想测试一个私有方法 - 我的设计有问题吗? [复制]

    这个问题在这里已经有答案了 因此 我对软件测试非常陌生 并且正在考虑向我的一个应用程序添加一些测试 我有一个公共方法 addKeywords 它一路上调用一个私有方法removeInvalidOperations 这个私有方法调用外部 AP
  • AngularJs - ngRepeat 带有返回新对象的过滤器

    我正在尝试对过滤器中的对象应用转换 这会导致返回一组新对象 这是因为我想在应用转换后过滤对象并显示转换结果 然而 我最终得到了无限的摘要 因为我显示的对象与我放入的对象不同 当比较它们时 ids 我解决这个问题的想法如下 使用类似的跟踪表达
  • 谷歌地图发布密钥的 SHA1 显示一些加密文本

    我正在使用谷歌地图 在调试模式下 这真是太棒了 对于发布模式 我尝试从我的 windows10 hp probook 获取发布 SHA1 密钥 但我得到了一些加密文本而不是 SHA1 我的命令如下 C Program Files Java
  • GetSupportActionBar 返回 null

    当我开始第二个 Activity 后 就没有 ActionBar 了 当我调用 GetSupportActivity 时 它返回 null 为什么 我有 minSdkVersion 10 和 targetSdkVersion 15
  • 在 Haxe 中传递任意函数参数列表

    在 ActionScript 中我可以使用 在函数声明中 因此它接受任意参数 function foo args void trace args length 然后我可以调用传递数组的函数 foo apply this argsArray
  • JS 中的动态 import() 文件

    我需要导入标记文件动态切片文件的一部分并将结果添加到变量并在我的 React 应用程序中渲染结果 import changelog md then 我试图这样做render 具有所有逻辑的方法 但我有问题 我需要在哪里导入它 在类中或外部
  • Excel 数据透视表 - 计算总和的平均值

    我确信这很简单 但是如何获得数据透视表来显示计算出的字段总和的平均值 在简化的示例中 我过滤掉了资金 x1 数据透视表显示了每人剩余资金的总和 现在我如何获得平均值按人 所以 手动计算 3300 3 我尝试使用计算字段 但无法弄清楚它是如何
  • Python xpath 不工作?

    好吧 这开始让我有点抓狂了 我已经尝试了几个 Python 的 xml xpath 库 但无法找到一种简单的方法来获取臭味十足的 标题 元素 最新的尝试如下所示 使用 Amara def view req url req content t
  • 该方法必须返回 boolean(Java) 类型的结果

    这是我的代码 boolean checkHit2 if cx lt 0 cx gt 640 return true if cy lt ground int cx return false if cx lt blue 15 cx gt blu
  • 如何在 C 中的 3d 数组中使用 memcpy

    我有一个 3 维数组int32 t x 1024 4 256 我需要将数组的所有元素复制到相同类型和大小的另一个数组int32 t y 1024 4 256 我可以用吗memcpy y x sizeof x 之后我可以访问数组的元素y与x
  • 将文件保存到 MyDocuments + 应用程序文件夹

    我正在尝试将 NET 应用程序设置文件保存到用户的 MyDocument MyApplication 文件夹 但我不知道如何检查现有文件夹 文件 并在保存时创建或附加文件夹 文件 我不想打开 saveFileDialog 因为我需要该文件位
  • SSE 错误 - 使用 m128i_i32 定义 __m128i 变量的字段

    定义一个 m128i变量以这种方式 m128i a a m128i i32 0 65000 我收到以下错误 错误 请求 a 中的非类成员 m128i i32 类型 m128i 又名 vector 2 long long int a m128
  • XPath 查找具有特定子节点的所有元素

    您能帮我找到下面示例中具有子元素 c 的所有元素 b 吗 a b b b b a
  • spring 拦截器从未被调用

    我有以下拦截器 Component public class ExternalLinkInterceptor extends HandlerInterceptorAdapter private static final Logger log
  • 使用 sse 指令进行复杂的 Mul 和 Div

    通过 SSE 指令执行复杂的乘法和除法是否有益 我知道使用 SSE 时加法和减法表现更好 有人可以告诉我如何使用 SSE 执行复杂的乘法以获得更好的性能吗 为了完整起见 可以下载 英特尔 64 和 IA 32 架构优化参考手册 here h
  • 我是否必须取消订阅ActivatedRoute(例如参数)可观察量?

    我发现很多例子ActivatedRoute可观察到的像params or url已订阅但未取消订阅 constructor private route ActivatedRoute ngOnInit this route params co