Подтвердить что ты не робот

Angular 2 - Передача параметров в маршрут

У меня есть тег <a>, как показано ниже,

<a [routerLink]="[/Person']">Person</a>

Итак, я хочу передать person.id этому маршрутизатору /Person. Как передать его и обработать на @RouteConfig как params в Angular 1

4b9b3361

Ответ 1

Перейти к ссылке на маршрутизатор:

<a [routerLink]="['/Person', person.id]">Person</a>

Обрабатывать в компоненте:

this.route.params.subscribe(
   (params: Params) => {
      this.id = params['id']; 
   }
);

Второй способ:

this.route.params.forEach(
   (params: Params) => {
       this.id = params['id'];
   }
);

В этом примере вы должны ввести ActivatedRoute (например, как свойство маршрута) следующим образом:

constructor(private route: ActivatedRoute) {}

Если вы подписываетесь - важно отписаться от Observable чтобы предотвратить утечки памяти.

Полный пример:

export class SimpleComponent implements OnInit, OnDestroy {
    private id: number;
    private route$: Subscription;
    constructor(private route: ActivatedRoute) {}

    ngOnInit() {
        this.route$ = this.route.params.subscribe(
            (params: Params) => {
                this.id = +params['id']; // cast to number
            }
        );
    }
    ngOnDestroy() {
        if (this.route$) this.route$.unsubscribe();
    }
}

Конфиг:

export const routes = [
    ...
    { path : 'Person/:id', component : ...},
    ...
];

Кроме того, @RouteConfig устарела.

Ответ 2

Вы можете передать это как

<a [routerLink]="['/Person', propertyWithId]">Person</a>

Ответ 3

В моем случае директива [routerLink] не работала для меня. Итак, я должен был сделать это программно.

Компонентный шаблон:

<a (click)="goToEdit(person.id)" >Edit</a>

Класс компонента:

import { Router } from '@angular/router';

export class PersonComponent{

    constructor(private _route: Router){ }

    goToEdit(id){
        this._route.navigate(['Person/' + id]);
    }

}