Angular 5 - Альтернатива для параметризованной маршрутизации - PullRequest
0 голосов
/ 21 мая 2018

Мой пример использования такой:

  • На главной странице у меня есть 2 кнопки, и любая из них приведет меня к тому же экрану.Когда я говорю «тот же экран», я имею в виду точно такой же компонент
  • В целевом компоненте мне нужно знать, какая кнопка приводит меня сюда.Так что данные будут обрабатываться по-разному.

То, что я до сих пор делал, чтобы заставить его работать, это использование параметризованных маршрутов (btn):

export const routes: Routes = [
   //blah
  { path: 'configuration/:btn', component: ConfigurationComponent, data : { title: 'Configuration' } },
   //blah
];

export class ConfigurationComponent implements OnInit {
    ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
      this.btnType = +params['btn'];
    });

    //this.btnType will be used to identify which button was clicked
}

Первая кнопка

<a [routerLink]="['/configuration', '1']">

Вторая кнопка

<a [routerLink]="['/configuration', '2']">

Проблема, которую я хочу решить:

URL отображается как:

configuration/1 иconfiguration/2

Но я хочу показать это как:

configuration/HELLO и configuration/BYEBYE

Можно ли это сделать с помощью параметризованной маршрутизации?Если нет, есть ли альтернативы?

1 Ответ

0 голосов
/ 21 мая 2018

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

this.btnType = +params['btn'];
<a [routerLink]="['/configuration', '1']">
<a [routerLink]="['/configuration', '2']">

на:

this.btnType = params['btn'];
<a [routerLink]="['/configuration', 'HELLO']">
<a [routerLink]="['/configuration', 'BYEBYE']">

Без + параметр останется строковым значением и будет либо 'HELLO 'или' BYEBYE 'в зависимости от вашего маршрута.

...