Я создал родительский и дочерний маршрут в приложении angular 8. Один из моих дочерних маршрутов, называемый соглашением, должен быть динамическим c. Это означает, что если есть три соглашения, должно быть три меню sidenav, показывающих маршрут к отдельной странице. Например, соглашение 1, соглашение 2, соглашение 3 et c. Я бы знал количество соглашений на момент загрузки компонента соглашений.
Как создать соглашение динамически. Как вы можете видеть сейчас, это stati c. Я также приложил снимок экрана, чтобы увидеть, как он выглядит.
снимок экрана
app.route
import { Routes } from '@angular/router';
import { NgxPermissionsGuard } from 'ngx-permissions';
import { MsalGuard } from '@azure/msal-angular';
import { SecurityPermissions } from './shared/constants/securityPermissions';
import { HomeGuard } from './shared/services/home.guard';
export const AppRoutes: Routes = [
{
path: '',
loadChildren: './modules/client-home/client-home.module#ClientHomeModule',
canActivate: [HomeGuard]
},
{
path: 'client-home',
loadChildren: './modules/client-home/client-home.module#ClientHomeModule',
canActivate: [MsalGuard, NgxPermissionsGuard],
data: {
permissions: {
only: [SecurityPermissions.organisation.AccessOrganisation]
}
}
},
{
path: 'individual-business-application',
loadChildren: './modules/iba/iba.module#IbaModule',
canActivate: [MsalGuard, NgxPermissionsGuard],
data: {
permissions: {
only: [
SecurityPermissions.iba.CompleteIba,
SecurityPermissions.iba.ViewIbaSummary
]
}
}
},
{ path: '**', redirectTo: '/' }
];
iba child route
const ibaRoutes: Routes = [
{
path: '',
canActivate: [IbaGuard],
component: IbaComponent,
resolve: { model: IbaResolve },
children: [
{
path: '', redirectTo: 'summary'
},
{
path: 'load/:clientRef',
component: ContactComponent,
data: { hidden: true }
},
{
path: 'contact',
component: ContactComponent,
data: {
title: '1. Contact',
role: [SecurityPermissions.iba.CompleteIba],
order: 1,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: false
}
},
{
path: 'address',
component: AddressComponent,
data: {
title: '2. Address',
role: [SecurityPermissions.iba.CompleteIba],
order: 2,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: false
}
},
{
path: 'employment',
component: EmploymentComponent,
data: {
title: '3. Employment',
role: [SecurityPermissions.iba.CompleteIba],
order: 3,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: false
}
},
{
path: 'fitness',
component: FitnessComponent,
data: {
title: '4. Fitness',
role: [SecurityPermissions.iba.CompleteIba],
order: 4,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: false
}
},
{
path: 'identification-questions',
component: IdentificationComponent,
canActivate: [NgxPermissionsGuard],
data: {
title: '5. Identification',
permissions: {
only: [SecurityPermissions.iba.UploadIbaIdentification]
},
role: [SecurityPermissions.iba.UploadIbaIdentification],
order: 5,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: false
}
},
{
path: 'additional-information',
component: AdditionalInformationComponent,
canActivate: [NgxPermissionsGuard],
data: {
title: 'Additional Information',
permissions: {
only: [SecurityPermissions.iba.UploadIbaIdentification]
},
role: [SecurityPermissions.iba.UploadIbaIdentification],
order: 6,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: true
}
},
{
path: 'agreement',
component: MultiAgreementComponent,
data: {
title: '6. Agreement',
order: 7,
sectionName: SectionNames.iba,
baseAddress: 'individual-business-application',
hidden: false
}
},
]
}
];
@NgModule({
imports: [RouterModule.forChild(ibaRoutes)],
exports: [RouterModule]
})
export class IbaRoutingModule {}