angular - 如何刷新路线的解析数据

标签 angular typescript angular2-router

考虑以下路由配置:

const routes: Routes = [
  {
    path: '',
    component: AppComponent,
    resolve: {
      app: AppResolver
    },
    children: [
      {
        path: 'user/:uid',
        resolve: {
          user: UserResolver
        },
        children: [
          {
            path: '',
            component: ViewUserComponent
          },
          {
            path: 'edit',
            component: EditUserComponent
          }
        ]
      }
    ]
  }
];

UserResolver 为路由 /user/:uid 的任何子级检索用户数据。 使用此数据,可以通过导航到 /user/:uid 查看用户配置文件,然后通过导航到 /user/:uid/edit 进行编辑。 成功编辑后,将重定向到用户的更新个人资料 (/user/:uid)。

但是, View 和编辑页面都是已解析路由的子级,当从一个导航到另一个时不会触发解析器。

因此,当从编辑组件导航回 View 组件时,显示的数据仍然是旧的、未更新的数据。

是否有任何方法可以使已解析的 user 数据无效以强制解析器从服务器再次获取它?还是有其他方法可以达到这种效果?

app 数据没有改变,我们不应该重新加载它。

最佳答案

我已经测试了解决方案“runGuardsAndResolvers”,它适用于我的用例,每次子页面更改时都会调用解析器。

它只是将此选项添加到您希望以这种方式表现的路由部分。

export const ROUTES: any = [
  {
    path: 'project/:name',
    runGuardsAndResolvers: "always",
    component: ProjectComponent,
    resolve: { project: ProjectResolver },
    children: [
      ...

关于angular - 如何刷新路线的解析数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44232418/

相关文章:

angular - 未知选项 : '--service-worker' creating new angular pwa

typescript - $event 对象在 Angular 2 中究竟做了什么?

typescript - 为什么 Typescript 接口(interface)允许自引用?

Cordova 插件不工作

javascript - HttpClient 中的 Angular 变化检测

angular - 防止按钮双击ionic2

angular - 如何通过 routerLink 指令指定查询参数

javascript - Angular2 - 扩展路由器和 Observable

Angular 动画持续时间被忽略?

angular - 使用正则表达式作为angular2中路由的路径值