代码之家  ›  专栏  ›  技术社区  ›  Stefan Falk

URL段更改后如何重新加载路由子组件?

  •  0
  • Stefan Falk  · 技术社区  · 6 年前

    我有不同项目的相同路线。所以所展示的一切都取决于 :projectId

      {path: 'projects/:projecteId', children: [
        {path: 'info', component: InfoComponent},
        {path: 'settings', component: SettingsComponent},
    
      ], canActivate: [ProjectGuard]},
    
      // Other routes ..
      {path: 'account', component: AccountComponent]
    

    在我的工具栏中,我有一个选择项目的选项-类似于您在GAE控制台中可以执行的操作:

    enter image description here

    我想知道我怎样才能改变现状 projectId 检测并更新所有受影响的组件。

    ProjectGuard -我们的想法是要有一个守卫来观察一个机器人提供的物体 ProjectService

    我真的需要这样的警卫吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   SiddAjmera    6 年前

    在要加载的组件中 path: 'projects/:projecteId' ,你可以注射 ActivatedRoute 听我说 params 可以在上面看到。

    变化 将运行您的代码:

    假设你开了一家 ProjectComponent ,您可以执行以下操作:

    import { ActivatedRoute } from '@angular/router';
    
    @Component({...})
    export class ProjectComponent  {
      projectId;
      constructor(private route: ActivatedRoute) {}
    
      ngOnInit() {
        this.route.params.subscribe(params => {
          this.projectId = params['projecteId'];
          // Here you'll always get notified when `projecteId` changes.
          // You can do the needful from here.
        });
      }
    
    }
    

    更新:

    CanActivate 警卫,在里面 canActivate 你可以用 ActivatedRouteSnapshot . 这也有一个 它是一个对象,但具有更新的 参数

    import { Injectable } from '@angular/core';
    import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
    import { Observable } from 'rxjs/Observable';
    
    @Injectable()
    export class ProjectGuard implements CanActivate {
      canActivate(
        next: ActivatedRouteSnapshot,
        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
        // Here the `next.params.projectId` will always give you updated projectId
        ...
      }
    }
    

    params.projectId projectId 投影 检查项目是否从下拉列表中实际更改。然后可以在ProjectGuard中注入该服务作为依赖项,这样就可以开始了。


    这里有一个 Sample StackBlitz

    推荐文章