Angular: передавать необязательные данные по маршруту - PullRequest
1 голос
/ 03 октября 2019

Я использую angular 5 , у меня длинный файл маршрутизации:

const homeRoutes: Routes = [
  {
    path: 'home', component: HomeComponent,
    children: [
      {
        path: 'registration',
        component: RegistrationComponent,
        children: [
          {
            path: 'synthese',
            component: SyntheseComponent
          },
          {
            path: 'queue',
            component: QueueComponent,
            children: [
              {
                path: 'queue-modal',
                component: QueueModalComponent
              },
              {
                path: 'confirm',
                component: ConfirmComponent
              }
            ]
          }
        ]
      },
      {
...

И я хочу передать данные по пути " registration ".

Как мне сказали, мне нужно написать так: path: 'registration/:mydata',

и после этого подписаться на данные ActivatedRoute

Проблема в том, что я не всегда передаю данные, это только в некоторых случаях.

Как я могу сделать это с минимальным воздействием ??

1 Ответ

1 голос
/ 03 октября 2019

Вы можете использовать параметры строки запроса (AKA queryParams ) вместо параметров маршрута. Вам не нужно определять параметры запроса в маршруте.

Вот пример относительного href:

registration/?mydata=123

Вот как вы можете определить queryParams для routerLink:

<a [routerLink]="['registration']" [queryParams]="{ mydata: 123 }">Go to Registration</a>

Вот как вы можете прочитать значение этого параметра:

myValue: any;

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.queryParams.subscribe(params => {
    this.myValue = params['mydata'];
  });
}
...