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 相关文章推荐
Javascript document.referrer判断访客来源网址
May 15 Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 Javascript
Javascript的严格模式strict mode详细介绍
Jun 06 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
javascript三元运算符用法实例
Apr 16 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
JavaScript实现添加及删除事件的方法小结
Aug 04 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
JavaScript禁止微信浏览器下拉回弹效果
May 16 Javascript
Express框架之connect-flash详解
May 31 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
js实现随机抽奖
Mar 19 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
如何过滤高亮显示非法字符
2006/10/09 PHP
php session 错误
2009/05/21 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
php二分查找二种实现示例
2014/03/12 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
php集成开发环境详解
2019/09/24 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
js图片处理示例代码
2014/05/12 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python对文件操作知识汇总
2016/05/15 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
思想品德自我鉴定
2013/10/12 职场文书
优良学风班总结材料
2014/02/08 职场文书
停电放假通知
2015/04/14 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android