广告
返回顶部
首页 > 资讯 > 精选 >Angular刷新当前页面的方法
  • 790
分享到

Angular刷新当前页面的方法

2023-06-14 10:06:38 790人浏览 薄情痞子
摘要

这篇文章主要介绍angular刷新当前页面的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Angular刷新当前页面的几种方法默认,当收到导航到当前URL的请求,Angular路由器会忽略。<a 

这篇文章主要介绍angular刷新当前页面的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Angular刷新当前页面的几种方法


默认,当收到导航到当前URL的请求,Angular路由器会忽略。

<a routerLink="/heroes" routerLinkActive="active">Heroes</a>

重复点击同一链接页面不会刷新。

从Angular 5.1起提供onSameUrlNavigation属性,支持重新加载路由。

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

onSameUrlNavigation有两个可选值:'reload'和'ignore',默认为'ignore'。但仅将onSameUrlNavigation改为'reload',只会触发RouterEvent事件,页面是不会重新加载的,还需配合其它方法。在继续之前,我们启用Router Trace,从浏览器控制台查看一下路由事件日志

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

可以看到,未配置onSameUrlNavigation时,再次点击同一链接不会输出日志,配置onSameUrlNavigation为'reload'后,会输出日志,其中包含的事件有:NavigationStart、RoutesRecognized、GuardsCheckStart、GuardsCheckEnd、ActivationEnd、NavigationEnd等。

相关教程推荐:《angular教程》

下面介绍刷新当前页面的几种方法:

NavigationEnd

配置onSameUrlNavigation为'reload'

监听NavigationEnd事件

订阅Router Event,在NavigationEnd中重新加载数据,销毁组件时取消订阅:

export class HeroesComponent implements OnDestroy {  heroes: Hero[];  navigationSubscription;  constructor(private heroService: HeroService, private router: Router) {    this.navigationSubscription = this.router.events.subscribe((event: any) => {      if (event instanceof NavigationEnd) {        this.init();      }    });  }  init() {    this.getHeroes();  }  nGonDestroy() {    if (this.navigationSubscription) {      this.navigationSubscription.unsubscribe();    }  }  ...}

这种方式可按需配置要刷新的页面,但代码烦琐。

RouteReuseStrategy

配置onSameUrlNavigation为'reload'

自定义RouteReuseStrategy,不重用Route

有两种实现方式:
在代码中更改策略:

constructor(private heroService: HeroService, private router: Router) {  this.router.routeReuseStrategy.shouldReuseRoute = function () {    return false;  };}

Angular应用Router为单例对象,因此使用这种方式,在一个组件中更改策略后会影响其他组件,但从浏览器刷新页面后Router会重新初始化,容易造成混乱,不推荐使用。

自定义RouteReuseStrategy:

import {ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy} from '@angular/router';export class CustomReuseStrategy implements RouteReuseStrategy {  shouldDetach(route: ActivatedRouteSnapshot): boolean {    return false;  }  store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle | null): void {  }  shouldAttach(route: ActivatedRouteSnapshot): boolean {    return false;  }  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {    return null;  }  shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {    return false;  }}

使用自定义RouteReuseStrategy:

@NgModule({  imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})],  exports: [RouterModule],  providers: [    {provide: RouteReuseStrategy, useClass: CustomReuseStrategy}  ]})

这种方式可以实现较为复杂的Route重用策略。

Resolve

使用Resolve可以预先从服务器上获取数据,这样在路由激活前数据已准备好。

实现ResolverService

将组件中的初始化代码转移到Resolve中:

import {Injectable} from '@angular/core';import {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';import {Observable} from 'rxjs';import {HeroService} from '../hero.service';import {Hero} from '../hero';@Injectable({  providedIn: 'root',})export class HeroesResolverService implements Resolve<Hero[]> {  constructor(private heroService: HeroService) {  }  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Hero[]> | Observable<never> {    return this.heroService.getHeroes();  }}

为路由配置resolve:

path: 'heroes', component: HeroesComponent, canActivate: [CanActivateAuthGuard], resolve: {heroes: HeroesResolverService}

修改组件代码,改为从resolve中获取数据

constructor(private heroService: HeroService, private route: ActivatedRoute) {}ngOnInit() {  this.route.data.subscribe((data: { heroes: Hero[] }) => {    this.heroes = data.heroes;  });}

配置onSameUrlNavigation为'reload'

配置runGuardsAndResolvers为‘always’

runGuardsAndResolvers可选值:'paramsChange' 、'paramsOrQueryParamsChange'、'always'

{path: 'heroes', component: HeroesComponent, canActivate: [CanActivateAuthGuard], resolve: {heroes: HeroesResolverService}, runGuardsAndResolvers: 'always'}

时间戳

给Router增加时间参数:

<a (click)="gotoHeroes()">Heroes</a>
constructor(private router: Router) {}gotoHeroes() {  this.router.navigate(['/heroes'], {    queryParams: {refresh: new Date().getTime()}  });}

然后在组件中订阅queryParamMap:

constructor(private heroService: HeroService, private route: ActivatedRoute) {  this.route.queryParamMap.subscribe(params => {    if (params.get('refresh')) {      this.init();    }  });}

以上是“Angular刷新当前页面的方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Angular刷新当前页面的方法

本文链接: https://www.lsjlt.com/news/270195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Angular刷新当前页面的方法
    这篇文章主要介绍Angular刷新当前页面的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Angular刷新当前页面的几种方法默认,当收到导航到当前URL的请求,Angular路由器会忽略。<a ...
    99+
    2023-06-14
  • js刷新当前页面的5种方式
    1. 使用location.reload()方法刷新页面:可以通过调用window.location.reload()或者locat...
    99+
    2023-09-15
    JS
  • vue项目刷新当前页面的三种方式(重载当前页面数据)
    目录vue项目刷新当前页面的三种方式(重载当前页面数据)一、this.$router.go(0)二、location.reload()三、用provide / inject 组合PS...
    99+
    2023-01-17
    vue刷新当前页面 vue重载当前页面数据
  • Vue实现当前页面刷新的4种方法举例
    目录前言方法一:location.reload方法二:$router.go(0)方法三:provide、inject和$nextTick方法四:创建空白页总结前言 这两周在写一个后台...
    99+
    2023-05-18
    vue页面刷新方法 vue当前页面刷新 vue重新加载当前页面
  • vue中如何刷新当前页面
    这篇文章主要介绍了vue中如何刷新当前页面的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue中如何刷新当前页面文章都会有所收获,下面我们一起来看看吧。项目当中如果做新增/修改/删除等等操作通常情况下都需要刷新...
    99+
    2023-07-05
  • vue3中怎么刷新当前页面
    这篇“vue3中怎么刷新当前页面”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3中怎么刷新当前页面”文章吧。1.业务场...
    99+
    2023-07-05
  • vue项目怎么刷新当前页面
    这篇文章将为大家详细讲解有关vue项目怎么刷新当前页面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。场景在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页...
    99+
    2022-10-19
  • vue不刷新当前页面怎么办
    本教程操作环境:Windows10系统、Vue 3版、Dell G3电脑。vue不刷新当前页面怎么办?vue项目中数据更新页面不刷新问题这种情况可以分为很多种.但是究其原因就是vue3.0以下版本无法监听对象(包括数组以及对象)的变化,当数...
    99+
    2023-05-14
    Vue
  • vue不刷新当前页面如何解决
    本文小编为大家详细介绍“vue不刷新当前页面如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue不刷新当前页面如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue不刷新当前页面的解决办法有:1、...
    99+
    2023-07-04
  • 浅析vue中怎么刷新当前页面
    vue怎么刷新当前页面?下面本篇文章给大家介绍一下vue刷新当前页面的几种实现方法,希望对大家有所帮助!项目当中如果做新增/修改/删除等等操作通常情况下都需要刷新数据或者刷新当前页面.思路(1)如果页面简单,调用接口刷新数据即可.(2)如果...
    99+
    2023-05-14
    前端 Vue.js JavaScript
  • 聊聊vue3中如何刷新当前页面
    本篇文章给大家带来了关于vue3 的相关知识,其中将给大家聊聊vue3中如何刷新当前页面,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。1.业务场景一般我们在删除或者编辑完表格数据的时候,会再次请求接口来刷新表格的数据。如果是同时有好几...
    99+
    2023-05-14
    前端 Vue.js
  • Vue实现刷新当前页面的三种方式总结
    目录背景思路实现方式1-通过location.reload和$router.go(0)方法方式2-通过空白页面方式3-通过provide和inject背景 项目当中如果做新增/修改/...
    99+
    2023-01-14
    Vue刷新当前页面 Vue刷新页面
  • vue刷新当前页面,11选5平台维护
    在vue管理后台中,11选5平台维护(企 娥:217 1793 408)表格经常会有增删改查,修改完之后就要刷新页面或者调方法,但是在权限菜单角色页面,你如果改变当前登录的账号的权限时,你就需要全局刷新,然...
    99+
    2022-10-18
  • 微信小程序如何设置刷新当前页面
    使用this.onShow()函数实现刷新当前页面首先,进入微信开发者工具,打开小程序文件目录;在文件目录中,依次查找:utils/app.json文件;最后,在app.js中,定义一个全局变量Flag,默认值为false,再调用接口获取数...
    99+
    2022-10-03
  • javascript关闭当前页面的方法
    小编给大家分享一下javascript关闭当前页面的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在javascript中,可以使用close()方法关闭浏览...
    99+
    2023-06-14
  • html刷新页面的方法有哪些
    在HTML中,有几种方法可以刷新页面。以下是其中一些常见的方法:1. 使用JavaScript:使用`location.reload...
    99+
    2023-08-08
    html
  • vue中实现页面刷新以及局部刷新的方法
    目录一.全页面刷新二、局部刷新三、应用场景总结一.全页面刷新 1.修改 App.vue,代码如下: <template> <div id="app"> ...
    99+
    2022-11-12
  • WordPress获取当前页面URL地址的方法
    本文实例讲述了WordPress获取当前页面URL地址的方法。分享给大家供大家参考。具体如下: 我们经常在做WordPress模板时会需要获取当前页面URL地址,这里就来给大家介绍获取当前页面URL地址方法. 用Word...
    99+
    2022-06-12
    WordPress 获取 当前页面 URL地址 方法
  • django+js+ajax实现刷新页面的方法
    本文实例讲述了django+js+ajax实现刷新页面的方法。分享给大家供大家参考,具体如下: 在服务器开发的时候,为了方便将服务器对外开一个接口来操作,可以使用django制作网页,通过页面来操作服务器。...
    99+
    2022-06-04
    页面 方法 django
  • Vue使用三种方法刷新页面
    我们在写项目的时候,经常会遇到,用户执行完某个动作,改变了某些状态,需要重新刷新页面,以此来重新渲染页面。如:用户登录成功、增加、删除、更新等。 原始方法: loca...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作