Есть ли способ указать базовый URL-адрес для разных подмодулей, которые лениво загружаются в Angular?

У меня есть основное угловое приложение, и там есть разные модули, лениво загружаемые в зависимости от маршрута.

    {
        path: 'url1',
        pathMatch: 'prefix',
        loadChildren: './url1/url1.module#Module1'
    },
    {
        path: 'url1',
        pathMatch: 'prefix',
        loadChildren: './url1/url1.module#Module2'
    },

Но внутри модулей у меня есть routerLinks в html, которые перемещаются по разным путям в выбранном модуле, но не считают url1 или url2 базовым URL-адресом.

я пытался добавить

 providers: [
    { provide: APP_BASE_HREF, useValue: '/url1' }
  ],

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

поэтому в основном /subroute1/subroute2 должен быть как url1/subroute1/subroute2, так как он дает ошибку

Ошибка: Неперехваченный (в обещании): Ошибка: Не удается сопоставить какие-либо маршруты. Сегмент URL /subroute1/subroute2

пример маршрутизации для подмодулей

   { 
        path: '',
        component: Module1MainComponent,
        children: [
            {path: 'reports', component: ReportsComponent}
        ]
    }

person RoHaN    schedule 02.12.2019    source источник
comment
Можете ли вы поделиться своей маршрутизацией для «Module1» и «Module2»?   -  person YogendraR    schedule 02.12.2019
comment
@ Yogendra123 Yogendra123 Я обновил маршрутизацию подмодуля.   -  person RoHaN    schedule 03.12.2019


Ответы (1)


Обновите маршрут базового модуля

  {
    path: 'url1',
    loadChildren: './url1/url1.module#Module1'
  },
  {
    path: 'url2',
    loadChildren: './url2/url2.module#Module2'
  },

Вы можете удалить pathMatch, маршруты вашего подмодуля выглядят нормально,

Убедитесь, что в основном модуле вызывается forRoot, а в подмодулях вызывается forChild из RouterModule, например:

  RouterModule.forRoot(routes)
  RouterModule.forChild(routes)

Вам не нужно APP_BASE_HREF

допустим, вы хотите перенаправить с ur1/subroute1 на url2/subroute2, тогда ваша ссылка на маршрутизатор будет выглядеть так:

 <a [routerLink]="['../url1/subroute2']">Go to</a>
person YogendraR    schedule 03.12.2019