Angular点击菜单刷新页面

点击菜单刷新页面

当前的问题是,当登录到系统后,只有第一次点击目录的时候才刷新,后面再次点击无反应,需要手动刷新页面,客户嫌麻烦,因此在网上搜了下,一共找到了四种方法,在此先做记录,遇到问题都可以尝试下,以备不时之需

  • 第一种 使用 ui-sref-opts 功能(不好使,没找到原因):
  <a ui-sref="page" ui-sref-opts="{reload:true,notify:true}">链接</a>
  • 第二种 click事件(不好使,没找到原因):
  $state.go('page',,{reload:true});
  • 第三种 (仍不好使,没找到原因)
  <app-view cache-view="false"></app-view>
  • 第四种 相当可行app.module.ts同级目录下新建一个app-routing.cache.ts文件
import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';

export class AppRoutingCache implements RouteReuseStrategy{
    public static handlers: { [key: string]: DetachedRouteHandle } = {};
    // 表示对路由允许复用
    public shouldDetach(route: ActivatedRouteSnapshot): boolean {
        return false;
    }
    // 当路由离开时会触发
    public store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
        AppRoutingCache.handlers[route.routeConfig.path] = handle;
    }
    // 若path在缓存中有的都认为允许还原路由
    public shouldAttach(route: ActivatedRouteSnapshot): boolean {
        return !!route.routeConfig && !!AppRoutingCache.handlers[route.routeConfig.path];
    }
    // 从缓存中获取快照,若无则返回null
    public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
        if (!route.routeConfig) {
            return null;
        }
        return AppRoutingCache.handlers[route.routeConfig.path];
    }
    // 进入路由触发,判断是否同一路由
    public shouldReuseRoute(future: ActivatedRouteSnapshot, current: ActivatedRouteSnapshot): boolean {
        return future.routeConfig == current.routeConfig;
    }
}

然后在app.module.ts中添加:

import { RouteReuseStrategy } from '@angular/router';
import { AppRoutingCache } from './app-routing.cache';
providers: [
  { provide: RouteReuseStrategy, useClass: AppRoutingCache },
]

这样就可以了,以上第四种方法是我现在项目中用到的,在我这可行,对于其他的项目,有待尝试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,631评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,480评论 2 59
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,041评论 3 119
  • 人工智能时代,机器代替人工。 反思:我的工作还有意义吗? 因为网上的一条消息,突然想到自动售卖机。是的,就是我们平...
    刘琼_Joan阅读 1,657评论 0 1
  • 王衍字夷甫,出生于魏晋高门琅琊王氏,他外表清明俊秀,风姿安详文雅。 有一次王衍曾拖一个族人办事,过了...
    刘子源海伯利安阅读 2,738评论 0 1