Saneth Chandrasekara
Saneth Chandrasekara

Reputation: 471

Angular Routing Invalid URL Segment

In my main Routing File

        RouterModule.forRoot([
        {
            path: '', component: AppMainComponent,
            children: [
                {path: '', component: DashboardComponent},
                {
                    path: 'participants',
                    loadChildren: () => import('./modules/participants/participants.module').then(m => m.ParticipantsModule),
                    data: {breadcrumb: 'Participants'}
                }
            ]
        },
        {path: 'error', component: AppErrorComponent},
        {path: 'accessdenied', component: AppAccessdeniedComponent},
        // {path: 'notfound', component: AppNotfoundComponent},
        {path: 'login', component: LoginComponent},
        // {path: '**', redirectTo: '/notfound'},
    ], {scrollPositionRestoration: 'enabled'})
],

In my Child Module Routing

    imports: [
    RouterModule.forChild([
        {path: '', component: ParticipantsComponent},
        {path: 'participant/:id', component: ParticipantComponent},
    ])
],

in my child component i tried to navigate to another component but it says URL Segment: 'participant;id=1001'

this.router.navigate(['participant', {id: data.id}]);

What i have done wrong in here. I tried it it even by removing the params also but it didn't work

Upvotes: 1

Views: 278

Answers (2)

kellermat
kellermat

Reputation: 4585

When you use this.router.navigate as shown above, you treat the id as a query-param even though it's just a normal route-param. I think you can pass an array of route-segments in order to fix this:

this.router.navigate(['/participants', 'participant', data.id]);

Please note:

The / at the beginning of the route is only needed if your route is a root-level route.

Upvotes: 2

Saneth Chandrasekara
Saneth Chandrasekara

Reputation: 471

this.router.navigate(['/participants/participant', data.id]);

Upvotes: 0

Related Questions