Angular, Dynami c Параметр на ленивом загруженном маршруте не работает - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть приложение Angular 8 с отложенной загрузкой, работающее на всех страницах, кроме 2 с динамическими c параметрами, где что-то работает неправильно

Из модуля маршрутизации приложения

  {
    path: 'product',
    loadChildren: './marketing/page/product/product-page.module#ProductPageModule'
  },

Из модуля ProductPageRoutingModule

const routes: Routes = [
  {
    path: '',
    component: AppMarketingPageProductComponent,
    children: [
      { path: ':slug', component: AppMarketingPageProductComponent },
      { path: ':slug', component: AppMarketingPageProductComponent },
      { path: ':slug/:secondary', component: AppMarketingPageProductComponent },
    ]
  }
];

Маршруты вставляются в импорт правильно, а модуль ProductRoutingModule импортируется в ProductPageModule.

@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  exports: [
    RouterModule
  ]
})
export class ProductRoutingModule {}

В конструкторе AppMarketingPageProductComponent

constructor(  private route: ActivatedRoute ) {}

С помощью этих 2 я пытаюсь получить параметры в функции onNgInit

    this.route.params.subscribe( (params: Params) => {
      console.log(params);
    });

Когда я пытаюсь загрузить страницу, я получаю пустой объект. вместо пар «ключ-значение» или «слаг» и «вторичные» значения ключ-значение.

1 Ответ

0 голосов
/ 10 февраля 2020

Проблема в том, что я думал, что дочерние маршруты на самом деле не являются дочерними, поэтому этот

const routes: Routes = [
  {
    path: '',
    component: AppMarketingPageProductComponent,
    children: [
      { path: ':slug', component: AppMarketingPageProductComponent },
      { path: ':slug', component: AppMarketingPageProductComponent },
      { path: ':slug/:secondary', component: AppMarketingPageProductComponent },
    ]
  }
];

необходимо изменить на этот

const routes: Routes = [
  { path: ':slug', component: AppMarketingPageProductComponent },
  { path: ':slug', component: AppMarketingPageProductComponent },
  { path: ':slug/:secondary', component: AppMarketingPageProductComponent },
];

, теперь он работает.

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