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的前端数据通用验证库
Aug 08 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
Apr 11 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
浅谈Javascript Base64 加密解密
Dec 28 Javascript
react.js CMS 删除功能的实现方法
Apr 17 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
详解如何探测小程序返回到webview页面
May 14 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
JavaScript中变量提升和函数提升的详解
Aug 07 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
详解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之第四天
2006/10/09 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php数组随机排序实现方法
2015/06/13 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
Python切片操作实例分析
2018/03/16 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python做接口测试的必要性
2019/11/20 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
金士达面试非笔试
2012/03/14 面试题
中专毕业生自我鉴定范文
2013/11/09 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
答辩状格式范本
2015/05/22 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
现实表现证明材料
2015/06/19 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android