【问题标题】:navigate relative to child route from my main routing从我的主路由相对于子路由导航
【发布时间】:2016-12-14 14:43:34
【问题描述】:

我的 app.routing forRoot() 文件:

const APP_ROUTES: Routes = [
  {path: 'immeuble', loadChildren: 'app/immeuble/immeuble.module#ImmeubleModule'},
  {path: '', component: HomeComponent}
];

在我的功能模块 ImmeubleModule 我有 immeuble.routing forChild 文件

const IMMEUBLE_ROUTES: Routes = [

  { path: ':id', component: ImmeubleComponent, children: [
    { path: 'general', component:GeneralComponent  },
    { path: 'objet', component:GeneralComponent  },
    { path: '**', redirectTo:'general', pathMatch:'full' },
  ] },
  { path: '', component: ImmeubleComponent , pathMatch:'full',children:[
    { path: '', component:AccueilComponent  },
  ]},
];

我的实际路径是immeuble/2/general

通过这条路径,我有两条激活的路线:

  1. AppComponent 中的根出口(@98​​7654325@ 时匹配)
  2. 作为根出口的孩子,我在 ImmeubleComponent 中有出口(在 /2/general 上匹配)

我的 AppComponent 中有所有链接,所以我想添加一个链接以导航到 /immeuble/2/object 而不指定 /immeuble/2 我只想要类似的东西:

router.navigate(['object'], relativeTo: activatedRoute[ImmeubleComponent])

我怎样才能做到这一点?

【问题讨论】:

    标签: angular angular2-routing angular2-template


    【解决方案1】:

    您可以注入和使用 ActivatedRoute 来查询当前路线和子路线,以便导航您想要的实际路线。

    在您的情况下,您可以使用 ActivatedRoute.children 方法获取子数组,然后查找最深的数组并用作导航的参数:

    this.router.navigate(['./', {params}], { relativeTo: _.last(this.route.children) });
    
    • 在此示例中,您可以更新当前路线的参数,还可以导航到上层 ('../') 或与当前路线相关的其他路线。
    • 我假设最后一个孩子是最深的,但我还没有测试过。就我而言,ActivatedRoute 中的 firstChild 方法就足够了:)。

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2017-05-05
      • 2019-04-10
      相关资源
      最近更新 更多