Angular: параметр маршрута в начале - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу сделать маршрут как http://localhost:4200/1234/page1/page/2/page3 и т. Д.

но выше url 123 (id) не является обязательным, поэтому ниже url также действителен http://localhost:4200/page1/page/2/page3

Я попытался обработать компонент страницы 1 как

  const routes: Routes = [
      { path: ':id/page1', pathMatch: 'full', component: Page1Component },
      { path: 'page1', pathMatch: 'full', component: Page1Component }
    ];

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

Так есть ли умный способ справиться с этим?

1 Ответ

0 голосов
/ 02 апреля 2019

Не похоже на это. Это было достаточно хорошо. Вам необходимо определить 2 пути для 2 возможных способов доступа с маршрута.

Источник: Серия угловых маршрутизаторов: учебник по вторичным выходам , Мощный механизм сопоставления URL-адресов угловых маршрутизаторов


Обновление:

В качестве альтернативы, один из лучших вариантов, который я думаю, это использовать NavigationExtras#state

, которые требуют дополнительных import { NavigationExtras } from '@angular/router'; для компонента отправителя и:

const navigationExtras: NavigationExtras = { state: { id: this.datatobepassed } };
this.router.navigate(['test'], navigationExtras);

для отправки данных.

А на компоненте приемника:

const navigation = this.router.getCurrentNavigation();
const state = navigation.extras.state as {id: number};
this.example = state.id;

для получения данных.

См. Следующее Демонстрация Stackblitz

...