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 相关文章推荐
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
JavaScript常用本地对象小结
Mar 28 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
基于angularjs实现图片放大镜效果
Aug 31 Javascript
Javascript自定义事件详解
Jan 13 Javascript
bootstrap常用组件之头部导航实现代码
Apr 20 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
Dec 31 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
vue监听对象及对象属性问题
Aug 20 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 Javascript
mpvue实现微信小程序快递单号查询代码
Apr 03 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
mongodb和php的用法详解
2019/03/25 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
JQUERY dialog的用法详细解析
2013/12/19 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
《从现在开始》教学反思
2014/04/15 职场文书
电话客服工作职责
2014/07/27 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
2014年实习期工作总结
2014/11/27 职场文书
公务员年终个人总结
2015/02/12 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
在js中修改html body的样式
2021/11/11 Javascript
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫