Angular刷新当前页面的实现方法


Posted in Javascript onNovember 21, 2018

onSameUrlNavigation

从angular5.1起提供onSameUrlNavigation来支持路由重新加载。

有两个值'reload'和'ignore'。默认为'ignore'

定义当路由器收到一个导航到当前 URL 的请求时应该怎么做。 默认情况下,路由器将会忽略这次导航。但这样会阻止类似于 "刷新" 按钮的特性。 使用该选项可以配置导航到当前 URL 时的行为。

使用

配置onSameUrlNavigation

@NgModule({
 imports: [RouterModule.forRoot(
  routes,
  { onSameUrlNavigation: 'reload' }
 )],
 exports: [RouterModule]
})

reload实际上不会重新加载路由,只是重新出发挂载在路由器上的事件。

配置runGuardsAndResolvers

runGuardsAndResolvers有三个值:

  • paramsChange: 仅在路由参数更改时触发。如/reports/:id 中id更改
  • paramsOrQueryParamsChange: 当路由参数更改或参训参数更改时触发。如/reports/:id/list?page=23中的id或page属性更改
  • always :始终触发
const routes: Routes = [
 {
  path: '',
  children: [
   { path: 'report-list', component: ReportListComponent },
   { path: 'detail/:id', component: ReportDetailComponent, runGuardsAndResolvers: 'always' },
   { path: '', redirectTo: 'report-list', pathMatch: 'full' }
  ]
 }
];

组件监听router.events

import {Component, OnDestroy, OnInit} from '@angular/core';
import {Observable} from 'rxjs';
import {Report} from '@models/report';
import {ReportService} from '@services/report.service';
import {ActivatedRoute, NavigationEnd, Router} from '@angular/router';

@Component({
 selector: 'app-report-detail',
 templateUrl: './report-detail.component.html',
 styleUrls: ['./report-detail.component.scss']
})
export class ReportDetailComponent implements OnInit, OnDestroy {
 report$: Observable<Report>;
 navigationSubscription;

 constructor(
  private reportService: ReportService,
  private router: Router,
  private route: ActivatedRoute
 ) {
  this.navigationSubscription = this.router.events.subscribe((event: any) => {
   if (event instanceof NavigationEnd) {
    this.initLoad(event);
   }
  });
 }

 ngOnInit() {
  const id = +this.route.snapshot.paramMap.get('id');
  this.report$ = this.reportService.getReport(id);
 }

 ngOnDestroy(): void {
  // 销毁navigationSubscription,避免内存泄漏
  if (this.navigationSubscription) {
   this.navigationSubscription.unsubscribe();
  }
 }

 initLoad(e) {
  window.scrollTo(0, 0);
  console.log(e);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery对checkbox操作 (循环获取)
May 20 Javascript
jQuery的ready方法详解
Nov 27 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
jQuery绑定事件的四种方式介绍
Oct 31 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
JavaScript中的一些隐式转换和总结(推荐)
Dec 22 Javascript
javascript、php关键字搜索函数的使用方法
May 29 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
Sep 12 Javascript
vue中使用mxgraph的方法实例代码详解
May 17 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
详解ES6系列之私有变量的实现
Nov 21 #Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 #jQuery
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 #Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 #Javascript
详解Vue.js在页面加载时执行某个方法
Nov 20 #Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 #Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 #jQuery
You might like
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP二维数组去重算法
2016/12/17 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
js CSS操作方法集合
2008/10/31 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
了解JavaScript中的选择器
2019/05/24 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
Python实现的连接mssql数据库操作示例
2018/08/17 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
海量信息软件测试笔试题
2015/08/08 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
解除合同协议书
2014/04/17 职场文书
考试诚信承诺书
2014/05/23 职场文书
企业负责人任命书
2014/06/05 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技