代码之家  ›  专栏  ›  技术社区  ›  Varun Sukheja

角度:开始时的路由参数

  •  0
  • Varun Sukheja  · 技术社区  · 7 年前

    我想做一条路线 http://localhost:4200/1234/page1/page/2/page3 等等。

    但是上面的url 123(id)是可选的,所以下面的url也是有效的 http://localhost:4200/page1/page/2/page3

    我试着像处理第一页组件一样

      const routes: Routes = [
          { path: ':id/page1', pathMatch: 'full', component: Page1Component },
          { path: 'page1', pathMatch: 'full', component: Page1Component }
        ];
    

    因为我必须在这里定义2条路由,同样地,如果我选择其他组件路由,我需要为每个组件提供2条路由。

    所以有聪明的方法来处理这个问题吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mukyuu    7 年前

    看起来不像。已经够好了。您需要为从路由访问的两种可能方式定义两条路径。

    来源 Angular Router Series: Secondary Outlets Primer , The Powerful URL Matching Engine of Angular Router


    更新:

    或者,我认为一个更好的选择是 NavigationExtras#state

    需要额外的 import { NavigationExtras } from '@angular/router'; 在发件人组件上,并且:

    const navigationExtras: NavigationExtras = { state: { id: this.datatobepassed } };
    this.router.navigate(['test'], navigationExtras);
    

    发送数据。

    在接收器组件上:

    const navigation = this.router.getCurrentNavigation();
    const state = navigation.extras.state as {id: number};
    this.example = state.id;
    

    接收数据。

    请参见以下内容 Stackblitz Demo