首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在渲染父路径后渲染子路径

仅在渲染父路径后渲染子路径
EN

Stack Overflow用户
提问于 2017-11-15 20:48:44
回答 1查看 390关注 0票数 0

我有一个路由结构

代码语言:javascript
复制
  path: '',
    component: MainComponent,
    children: [
      {path: 'employees', component: EmployeesComponent, canActivate: [AuthGuard], children: [
        {path: '', component: EmployeeListComponent, pathMatch: 'full', canActivate: [AuthGuard]},
        {path: ':id', component: EmployeeMainComponent, pathMatch: 'full',  canActivate: [AuthGuard]}
      ]}
    ]
  }

在Main component ngOnInit中,我得到了子模块列表

代码语言:javascript
复制
getSubmodules(id) {
    this.universityAsideService.getSubmodules(id)
      .subscribe((subModules) => {
        this.subModules = subModules;
      this.saveSubModules(subModules).subscribe((data) => this.goToModule(id));
        console.log('submodules in getSubmodules, UniversityAside Co');
        console.log(this.subModules);
      });
  }

  saveSubModules(subModules): Observable<any> {
    return Observable.create((obs) => {
      obs.next(localStorage.setItem('subModules', JSON.stringify({
        subModules: subModules
      })));
    });
  }

然后Emloyees组件从localstorage获取子模块列表,然后呈现视图。但是访问localhost:4200/#/employees/时的问题,那么employees组件试图在MainComponent保存到本地存储之前从本地存储中获取子模块。我该如何解决这个问题?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 21:57:30

实现AuthGuard以防止在父组件之前呈现子组件。

如下所示修改路由:

代码语言:javascript
复制
  path: '',
    component: MainComponent,
    canActivate: [AuthGuard],
    children: [
      {path: 'employees', component: EmployeesComponent, canActivate: [AuthGuard], children: [
        {path: '', component: EmployeeListComponent, pathMatch: 'full', canActivate: [AuthGuard]},
        {path: ':id', component: EmployeeMainComponent, pathMatch: 'full',  canActivate: [AuthGuard]}
      ]}
    ]
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47307863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档