typescript - Hvordan definerer man en standardrute med parametre i Angular Component Router?


Jeg vil gerne have en standardrute i min underkomponent (sat med useAsDefault: true) og have parametre automatisk videregivet til den. Jeg kan ikke finde nogen steder i dokumentationen, hvordan man gør det. Jeg har en overordnet komponent med følgende rute:

$routeConfig = [
    { path: '/employees/...', component: 'employeesComponent', name: 'Employees'}
]

og en underkomponent med:

$routeConfig = [
    { path: '/:group/:filter', component: 'employeeListComponent', name: 'Group', useAsDefault: true}
    { path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'}
]

Dette fejler selvfølgelig med: Route generator for 'group' blev ikke inkluderet i de parametre, der blev sendt. Jeg kunne ikke finde ud af, hvordan man sender nogle standardparametre til den første rute. Jeg arbejdede udenom det ved at oprette endnu en rute uden parametre og brugte den som standard:

{ path: '/all', component: 'employeeListComponent', name: 'All', useAsDefault: true}

men det er selvfølgelig ikke ideelt. Indtil videre har jeg ikke fundet på noget bedre end at bruge rute uden parametre og derefter straks omdirigere med nogle standardparametre. Er der ikke en bedre måde?

Svar #1

Så jeg løste mit problem på følgende måde: Jeg tilføjede en standardrute uden parametre, og jeg omdirigerede straks fra $routerOnActivate

public $routeConfig = [
    { path: '/', component: 'employeeListComponent', name: 'GroupRedirect', useAsDefault: true},    
    { path: '/:group/:filter', component: 'employeeListComponent', name: 'Group'}
    { path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'},
]

og derefter i controlleren:

public $routerOnReuse(route) {
  if (!route.params.group) {
    this.$router.navigate(['Group', { group: 'status', filter: 'active' }]);
  }
}

Svar #2

Så vidt jeg ved, understøttes dette ikke. Du kan have en rute med og uden parameteren, og så i GroupDefault-komponenten bare navigere til Group

$routeConfig = [
    { path: '/group', component: 'employeeListComponentDefault', name: 'GroupDefault', useAsDefault: true}

    { path: '/:group/:filter', component: 'employeeListComponent', name: 'Group'},
    { path: '/details/:employeeId/...', component: 'profileComponent', name: 'EmployeeProfile'}
]

Se også

  • Valgfrie parametre under routing i angular2
  • Angular 2 valgfri ruteparameter

Relaterede artikler