Angular Маршруты: несколько выходов с путем в виде массива строк - PullRequest
0 голосов
/ 14 июля 2020

В моем приложении angular9 настроены сотни путей маршрутов, поэтому есть ли способ использовать несколько выходов с одним массивом строкового пути.

текущий код:

const routes: Routes = [
    {
        path: 'Data/:EntityID/:Date',
        component: MyFormComponent,children:[
            {
                path: '',
                loadChildren: () => import('../data-entry/data-entry.module').then(m => m.DataEntryModule)
            }
        ], 
    } ,
    { 
        path: 'Settings/:EntityID/:Date',
        component: MyFormComponent,children:[
            {
                path: '',
                loadChildren: () => import('../data-entry/data-entry.module').then(m => m.DataEntryModule)
            }
        ]
    }
...
];
    
export const routing = RouterModule.forChild(routes);

так есть ли способ использовать тот же путь, что и строковый массив. Потому что в случае вышеупомянутого способа сценарий увеличивается для одного и того же компонента для нескольких путей.

что-то вроде :

const routes: Routes = [
    {
        path: ['Data/:EntityID/:Date','Settings/:EntityID/:Date',...],
        component: MyFormComponent,children:[
            {
                path: '',
                    loadChildren: () => import('../data-entry/data-entry.module').then(m => m.DataEntryModule)
            }
        ], 
    }
];
    
export const routing = RouterModule.forChild(routes);

Пожалуйста, предложите мне возможные способы.

Спасибо.

1 Ответ

1 голос
/ 14 июля 2020

Взгляните на интерфейс Route :

interface Route {
  path?: string
  pathMatch?: string
  matcher?: UrlMatcher
  component?: Type<any>
  redirectTo?: string
  outlet?: string
  canActivate?: any[]
  canActivateChild?: any[]
  canDeactivate?: any[]
  canLoad?: any[]
  data?: Data
  resolve?: ResolveData
  children?: Routes
  loadChildren?: LoadChildren
  runGuardsAndResolvers?: RunGuardsAndResolvers
}

Путь объявлен как строка типа, поэтому вы не можете изменить его на массив строк. Если вы это сделаете, вы получите следующую ошибку:

Type 'string[]' is not assignable to type 'string'.ts(2322)

Вместо этого попробуйте что-нибудь вроде:

const routes: Routes = [
    {
        path: 'Data/:EntityID/:Date',
        component: MyFormComponent,`children`:[
            {
                path: '',
                loadChildren: () => import('../data-entry/data-entry.module').then(m => m.DataEntryModule)
            }
        ], 
    } ,
    { 
        path: 'Settings/:EntityID/:Date',
        redirectTo: 'Data/:EntityID/:Date', pathMatch: 'full'
    }
...
];

Таким образом вы не будете повторять хотя бы часть компонента и дочерних элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...