Angular маршрутизатор с дополнительным параметром - PullRequest
0 голосов
/ 15 апреля 2020

Есть ли способ выполнить sh такой подход без дублирования кода для свойства children?

const routes: Routes = [
  {
    path: '', component: SmartSearchComponent, canActivate: [AuthGuard],
    canActivateChild: [AuthGuard],
    children: [
      {path: '', redirectTo: 'home', pathMatch: 'full'},
      {path: 'home', component: HomeComponent},
      {
        path: 'member-profile/:mcid',
        component: MemberProfileComponent,
        children: [
          {path: '', redirectTo: 'member-info', pathMatch: 'full'},
          {path: 'member-info', pathMatch: 'full', component: MemberInfoComponent},
          {path: 'id-cards', component: IdCardsComponent},
          {path: 'register-family-members', component: RegisteredFamilyMembersComponent},
          {path: 'associate-caregivers', component: AssociateCaregiversComponent},
          {path: 'member-preferences', component: MemberPreferencesComponent},
          {path: 'two-fa-info', component: TwofaInfoComponent},
          {path: 'coverage/:hcid', component: CoverageComponent},
        ]
      },
      {
        path: 'member-profile/:mcid/:hcid',
        component: MemberProfileComponent,
        children: [
          {path: '', redirectTo: 'member-info', pathMatch: 'full'},
          {path: 'member-info', pathMatch: 'full', component: MemberInfoComponent},
          {path: 'id-cards', component: IdCardsComponent},
          {path: 'register-family-members', component: RegisteredFamilyMembersComponent},
          {path: 'associate-caregivers', component: AssociateCaregiversComponent},
          {path: 'member-preferences', component: MemberPreferencesComponent},
          {path: 'two-fa-info', component: TwofaInfoComponent},
          {path: 'coverage/:hcid', component: CoverageComponent},
        ]
      }
    ]
  }
];

У меня есть дублирование кода для маршрутов member-profile/:mcid и member-profile/:mcid/:hcid, которые я не совсем нравится Я пытался создать функцию, которая создала бы эти 2 объекта, но Angular жалуется, что у меня не может быть методов в шаблонах.

Если я использую маршрут как member-profile/:mcid/:hcid?, он тоже не будет работать.

Есть ли лучший подход к этому?

1 Ответ

0 голосов
/ 15 апреля 2020
// Declaration 
const appRoutes: Routes = [{ path: employee, component: abcComp }]
// You dont need to set Query parameter in routing
// Implementation in Ts
this.route.navigate(['employee'], { queryParams: { name: 'a' } })
//queryParamsHandling='Merge' or 'retain' these options is also used to retain the parameters or to merge them 
// Catching in Ts 
constructor(private route : ActivateRoute){
}
let name = this.route.snapshot.queryParamMap.get('name');
...