I'm trying to add navigation to components in addition to the navigation of the app root, but it is not navigating to component route.
I'm using two router-outlet:
With two routes:
When navigating to "users" I can see users.component.html with two links, but when pressing on the link "list", it is not navigating to: UsersListComponent defined in users.routing.module.ts
I'm not sure if this is the correct way to do this.
Below is folder structure of the project and source code:
-- app.routing.module.ts
-- app.component.html
-- components
-- dashboard
-- users
-- users.component.html
-- users.module.ts
-- users.routing.module.ts
app.routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { UsersModule } from './panels/users/users.module';
const AppRouting: Routes = [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: 'dashboard', component: DashboardComponent },
{ path: 'users', loadChildren: () => UsersModule }
{ path: '**', component: DashboardComponent }
];
@NgModule({
imports: [RouterModule.forRoot(AppRouting, { enableTracing: true })],
exports: [RouterModule],
providers: []
})
export class AppRoutingModule { }
app.component.html
<div class="app-wrapper">
<router-outlet></router-outlet>
</div>
users.component.html
<a [routerLinkActive]="['active']" [routerLink]="[{ outlets: { 'users':['list'] } }]" [skipLocationChange]="true">List</a>
<a [routerLinkActive]="['active']" [routerLink]="['create']" [skipLocationChange]="true">Create</a>
<router-outlet name="users"></router-outlet>
users.routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule, RouterOutlet, RouterLink, RouterLinkActive } from '@angular/router';
import { CreateUserComponent } from './user-create/user-create.component';
import { UsersListComponent } from './users-list/users-list.component';
import { UsersComponent } from './users.component';
const UsersRouting: Routes = [
{ path: 'list', component: UsersListComponent, outlet: 'users' },
{ path: 'create', component: CreateUserComponent, outlet: 'users' },
{ path: 'edit', component: CreateUserComponent, outlet: 'users' },
{ path: '', component: UsersComponent }
];
@NgModule({
imports: [
RouterModule.forChild(UsersRouting)
],
declarations: [],
exports: [
RouterModule
],
})
export class UsersRoutingModule {}
users.module.ts
import { NgModule } from '@angular/core';
import { CreateUserComponent } from './user-create/user-create.component';
import { UsersComponent } from './users.component';
import { UsersListComponent } from './users-list/users-list.component';
import { UsersRoutingModule } from './users.routing.module';
@NgModule({
imports: [
UsersRoutingModule,
],
declarations: [
UsersComponent,
UsersListComponent,
CreateUserComponent
]
})
export class UsersModule { }
Thanks in advance
Angular Router supports multiple outlets in the same application. A component has one associated primary route and can have auxiliary routes. Auxiliary routes enable developers to navigate multiple routes at the same time.
Yes! We can use multiple router-outlets in same template by configuring our routers and simply add the router-outlet name. You can see in the example.
Router-Outlet is an Angular directive from the router library that is used to insert the component matched by routes to be displayed on the screen.
Router outlet is a dynamic component that the router uses to display in this case either the Home or the AllLessons components. There is nothing special about these components, these could be any component.
Do you really need a named router outlet?
<router-outlet name="users"></router-outlet>
Or could you just use a child router outlet:
<router-outlet></router-outlet>
I have a video about routing here that may help: https://www.youtube.com/watch?v=LaIAHOSKHCQ&t=1s
Yo... just specify the outlet to be a custom outlet https://angular.io/guide/router#add-a-secondary-route
so you could say
{
path: 'compose',
component: ComposeMessageComponent,
outlet: 'popup'
},
Then this component will render in a <popup></popup>
component
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With