首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Angular 2中订阅ActivatedRoute参数不会更新视图模板

在Angular 2中,订阅ActivatedRoute参数不会自动更新视图模板。这是因为ActivatedRoute参数的变化不会触发Angular的变更检测机制。

要解决这个问题,我们可以使用ActivatedRoute的queryParams和paramMap属性来订阅参数的变化,并手动更新视图模板。

首先,我们需要在组件的构造函数中注入ActivatedRoute服务,并订阅queryParams和paramMap属性:

代码语言:txt
复制
import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute) {
  this.route.queryParams.subscribe(params => {
    // 处理queryParams的变化
    // 更新视图模板
  });

  this.route.paramMap.subscribe(params => {
    // 处理paramMap的变化
    // 更新视图模板
  });
}

然后,在订阅的回调函数中,我们可以处理参数的变化,并手动更新视图模板。例如,我们可以将参数的值赋给组件的成员变量,然后在模板中使用这些变量来显示参数的值:

代码语言:txt
复制
import { ActivatedRoute } from '@angular/router';

export class MyComponent {
  queryParams: any;
  paramMap: any;

  constructor(private route: ActivatedRoute) {
    this.route.queryParams.subscribe(params => {
      this.queryParams = params;
      // 更新视图模板
    });

    this.route.paramMap.subscribe(params => {
      this.paramMap = params;
      // 更新视图模板
    });
  }
}

在模板中,我们可以使用双向绑定来显示参数的值:

代码语言:txt
复制
<p>queryParams: {{ queryParams | json }}</p>
<p>paramMap: {{ paramMap | json }}</p>

这样,当ActivatedRoute参数发生变化时,我们就可以通过订阅queryParams和paramMap属性,并手动更新视图模板来实现视图的更新。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云数据库MySQL。腾讯云云服务器提供了可靠、高性能、可扩展的云计算服务,适用于各种应用场景。腾讯云云数据库MySQL是一种高性能、可扩展的关系型数据库服务,提供了稳定可靠的数据库存储和管理能力。

腾讯云云服务器产品介绍链接地址:https://cloud.tencent.com/product/cvm 腾讯云云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb_mysql

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 快速学习笔记(1) -- 官方示例要点

Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰器添加元数据的形式 providedIn: 'root', 当你顶层提供该服务时,Angular...添加路由 ,路由定义 会告诉路由器,当用户点击某个链接或者浏览器地址栏中输入某个 URL 时,要显示哪个视图,因此路由包含两个属性: i. path:一个用于匹配浏览器地址栏中 URL 的字符串...component中,构造函数增加ActivatedRoute 、location i....ActivatedRoute 保存着到lComponent 实例的路由信息,this.route.snapshot.paramMap.get('id') ii. location 是一个 Angular...快速学习笔记(4) -- Observable与RxJS Angular快速学习笔记(3) -- 组件与模板 Angular快速学习笔记(2) -- 架构 Angular 快速学习笔记(1) -- 官方示例要点

3.6K50

Angular 快速学习笔记(1) -- 官方示例要点

Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰器添加元数据的形式 providedIn: 'root', 当你顶层提供该服务时,Angular...添加路由 ,路由定义 会告诉路由器,当用户点击某个链接或者浏览器地址栏中输入某个 URL 时,要显示哪个视图,因此路由包含两个属性: i. path:一个用于匹配浏览器地址栏中 URL 的字符串...component中,构造函数增加ActivatedRoute 、location i....ActivatedRoute 保存着到lComponent 实例的路由信息,this.route.snapshot.paramMap.get('id') ii. location 是一个 Angular...快速学习笔记(4) -- Observable与RxJS Angular快速学习笔记(3) -- 组件与模板 Angular快速学习笔记(2) -- 架构 Angular 快速学习笔记(1) -- 官方示例要点

3.6K00

Angular 2 + 折腾记 :(4)初步了解路由及使用

前言 路由这块的水挺深,我这里扯扯我用过的一些特性及一丢丢的经验 ---- 概念性的东西 言简意赅的总结一下: 路由就是控制视图视图之间的跳转,之间还可以传递参数什么的,路由的退后及前进不会完整的请求整个页面...fragment:代码片段拼接到url,只接受字符串,url就是hash拼接;/security-alert#1232 ActivatedRoute: 当前活动的路由,非常常用,逻辑处理的时候经常用到...navigate :配合可选参数可以实现当前路劲下的相对跳转,带参数跨页面跳转等 angular 4版本的路由加强了很多。。比如可以路由进入或者脱离的时候做一些事件处理!!!...'@angular/router'; // 页面组件 import { NameComponent } from '....来获取url上对应的参数 this.activatedRoute.params.subscribe((params: { id: number }) => { if (params.id

3K20

Angular 从入坑到挖坑 - Router 路由使用入门指北

一、Overview Angular 入坑记录的笔记第五篇,因为一直加班的缘故拖了有一个多月,主要是介绍 Angular 中如何配置路由,完成重定向以及参数传递。...至于路由守卫、路由懒加载等“高级”特性,并不会在本篇文章中呈现 对应官方文档地址: 路由与导航 配套代码地址:angular-practice/src/router-tutorial 二、Contents...四、Step by Step 4.1、基础概念 4.1.1、base url Angular 应用中,框架会自动将 index.html 文件中的 base url 配置作为组件、模板和模块文件的基础路径地址... Angular 中,需要在组件类中依赖注入 ActivatedRoute 来获取传递的参数信息 这里的 queryParamMap 是一个 Observable 对象,所以这里需要使用 subscribe...方法来获取传递的参数值 import { Component, OnInit } from '@angular/core'; // 引入路由模块 import { ActivatedRoute }

4.2K50

Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

ngOnDestroy:Angular销毁指令/组件之前清除。取消订阅可观察的对象并脱离事件处理程序,以避免内存泄漏。...ngAfterViewInit:Angular创建组件的视图后。 ngAfterViewChecked:Angular检查组件视图的绑定之后。 2. ...Angular 2中的路由工作原理是什么? 路由是能够让用户视图/组件之间导航的机制。Angular 2简化了路由,并提供了模块级(延迟加载)下配置和定义的灵活性。 ...成功匹配时,它会应用重定向,此时路由器会构建ActivatedRoute对象的树,同时包含路由器的当前状态。重定向之前,路由器将通过运行保护(CanActivate)来检查是否允许新的状态。...AOT编译代表的是Ahead Of Time编译,其中Angular编译器构建时,会将Angular组件和模板编译为本机JavaScript和HTML。

17.3K80

使用Angular8和百度地图api开发《旅游清单》

每个组件都会定义一个类,其中包含应用的数据和逻辑,并与一个 HTML 模板相关联,该模板定义了一个供目标环境下显示的视图 比如: import { Component, OnInit } from '@...class Storage {} ``` 复制代码 路由 Angular 的 Router 模块提供了一个服务,它可以让你定义应用的各个不同状态和视图层次结构之间导航时要使用的路径。...接下来我们看看首页核心功能的实现: 百度地图初始化路线图: 代码如下: import { Component, OnInit } from '@angular/core'; import { ActivatedRoute...import { ActivatedRoute } from '@angular/router'; import { Input } from '@angular/core'; import { Http.../core'; import { ActivatedRoute } from '@angular/router'; import { Input } from '@angular/core'; import

6K30

Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

模板驱动表单依赖FormsModule,数据驱动的表单依赖FormsModule,ReactiveFormsModule 一般做表单校验及操作推荐用数据驱动的方式,好维护和理解。。...---- 模板驱动 模板驱动:主要是依赖[(ngModel)]和#scope_var以及原生表单控件属性(require,minlenght,maxlength等)来操作表单的那的值亦或者校验 一个最简单的例子...messageTips: string; public login_subscribe: any; // Validators的写法注意事项 // v2.x版本这样的写法是可行的,v4有调整,不然不会生效...代表这个元素初始化构建为空值,类似未输入状态 // 'UserName': ['', Validators.compose([Validators.minLength(6)] // Validators可选参数.../core'; import { Router, ActivatedRoute } from '@angular/router'; import { FormGroup, FormControl, Validators

3.8K20

AngularDart 4.0 高级-管道 顶

如果管道接受多个参数,请使用冒号分隔值(如slice:1:5) 修改生日模板以给日期管道一个格式参数。...它执行管道并用新的列表更新显示,其中包括新的飞行英雄。 如果您更改列表,则不会调用管道,并且不会更新显示; 如果您替换列表,管道将执行并更新显示。...Angular忽略(复合)对象内的更改。 如果您更改输入月份,添加到输入列表或更新输入对象属性,它将不会调用纯管道。 这看起来很有限制,但速度也很快。...对象引用检查的速度比深入检查差异要快得多 - 所以Angular可以快速确定它是否可以跳过管道执行和视图更新。 出于这个原因,如果您可以接受变更检测策略,则最好使用纯净的管道。...像样式一样使用它们,将它们放入模板表达式中,以丰富视图的吸引力和可用性。 API参考中探索Angular的内置管道库。 尝试编写一个自定义管道,并可能将其贡献给社区。

6.3K20

vue响应式原理(数据双向绑定的原理)

所谓数据驱动是指视图是由数据驱动生成的,对视图的修改,不会直接操作 DOM,而是通过修改数据。...,这样就完成了数据改变到视图更新的一个自动过程 实现数据双向绑定的方法: 发布者-订阅者模式(backbone.js) 思路:使用自定义的data属性,HTML代码中指明绑定。...脏值检查(angular.js) angular.js是通过脏值检测的方式,对比数据是否有变更,从而决定是否更新视图。最简单的方式就是通过setInterval()定时轮询检测数据变动。...然后,需要compile解析模板指令,将模板中的变量替换成数据,接着初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者。...一旦数据有变动,订阅者收到通知,就会更新视图 3.

2.7K40

vue双向数据绑定原理

本文采用了比较特殊的input和v-model指令 实际上vue的指令解析模板很复杂,本文重点是理解数据更新的思想 几种实现双向绑定的做法 目前几种主流的mvc(vm)框架都实现了单向数据绑定,而我所理解的双向数据绑定无非就是单向绑定的基础上给可输入元素...实现数据绑定的做法有大致如下几种: 发布者-订阅者模式(backbone.js) 脏值检查(angular.js) 数据劫持(vue.js) 发布者-订阅者模式: 一般通过sub, pub...= value 这种方式更新数据,同时自动更新视图,于是有了下面两种方式 脏值检查: angular.js 是通过脏值检测的方式比对数据是否有变更,来决定是否更新视图,最简单的方式就是通过 setInterval...() 定时轮询检测数据变动,当然Google不会这么low,angular只有指定的事件触发时进入脏值检测,大致如下: DOM事件,譬如用户输入文本,点击按钮等。...,以及绑定相应的更新函数 实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图 入口函数,整合以上三者 流程图

2.1K20

进阶 | 重新认识Angular

首先我们使用一个内建DSL来解析模板字符串并输出AST。 结合特定的数据模型(regularjs中,是一个裸数据), 模板引擎层级游历AST并递归生成Dom节点(不会涉及到innerHTML)。...以上内容参考:《一个对前端模板技术的全面总结》 ---- 数据更新Diff 框架的数据更新: React => 虚拟DOM Vue => getter/setter Angular => 脏检查 React...把 2 所记录的差异应用到步骤1所构建的真正的DOM树上,视图更新了。 分享文章:《深度剖析:如何实现一个 Virtual DOM 算法》。 Vue 1....Vue1:使用getter/setter Proxy进行更新。 Vue使用的发布订阅模式,是点对点的绑定数据。...Rx的数据是否流出不取决于是否subscribe,也就是说一个observable未被订阅的时候也可以流出数据,之后它被订阅过后,先前的数据是无法被数据消费者所查知,所以Rx还引入了一个lazy模式

2.5K10

AngularDart 4.0 高级-生命周期钩子 顶

第一次ngAfterContentChecked之后调用一次。 组件独有的钩子。 ngAfterViewChecked Angular检查组件的视图和子视图之后作出响应。...取消订阅observables并分离事件处理程序以避免内存泄漏。 Angular摧毁指令/组件之前调用。 其他生命周期挂钩 其他Angular子系统除了这些组件钩子可能有自己的生命周期钩子。...OnDestroy 将清理逻辑放入ngOnDestroy中,Angular销毁指令之前必须运行的逻辑。 这是通知应用程序的另一部分组件将要销毁的时间。 这是释放资源的地方,不会自动收集垃圾。...Angular的单向数据流规则禁止视图组成之后更新视图。 组件视图组合完成后,这两个钩子都会触发。 如果钩子立即更新组件的数据绑定comment属性,Angular会抛出一个错误(尝试它!)。...这一次,它不是模板中包含子视图,而是从AfterContentComponent的父项导入内容。 这是父母的模板

6.2K10

Angular2学习记录-给后端程序员的经验分享

//下面这种写法TS下不会有效果....号参数风格的.两种参数都保存在ActivatedRoute对象中,因此下面代码中的route为此对象 — restful风格 配置:{path:'article/:id',component:ArticleComponent...queryParamMap.subscribe(),路由参数更新时自动通知 3.5组件通信 父->子:子组件使用input装饰器,接受父组件的属性,并且可使用ngOnChanges或则setter监听变化...任意组件:使用service通讯(要求service单例),service提供Observable的next发布,其他组件引用service对象subscribe该发布,那么就实现了信息的流动,并且是只要订阅了该发布的组件中都能获取...这是因为访问主域名后angular的js都已经全部加载了,这个时候跳转是js来控制的,不经过nginx自然不会出现上面的问题.

3.1K20

面试中会被问及到的vue知识

可以该钩子中进一步地更改状态,不会触发附加的重渲染过程。 updated (更新后) 由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。...,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 Watcher订阅者是Observer和Compile之间通信的桥梁...中,但不被包括HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。...Vue与Angular以及React的区别? 版本不断更新,以下的区别有可能不是很正确。...子组件也实时更新react中官方建议props要像纯函数那样,输入输出一致对应,而且不太建议通过props来更改视图; 子组件一般要显示地调用props选项来声明它期待获得的数据。

2.4K30

公司要求会使用框架vue,面试题会被问及哪些?

可以该钩子中进一步地更改状态,不会触发附加的重渲染过程。 updated (更新后) 由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。...,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 Watcher订阅者是Observer和Compile之间通信的桥梁...中,但不被包括HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。...Vue与Angular以及React的区别? 版本不断更新,以下的区别有可能不是很正确。...子组件也实时更新react中官方建议props要像纯函数那样,输入输出一致对应,而且不太建议通过props来更改视图; 子组件一般要显示地调用props选项来声明它期待获得的数据。

2.4K30
领券