У меня есть проект Angular 5, где пользователи переходят по таким маршрутам, когда нажимают на элемент.

my_domain/{account_id}/item/{item_id}/open/ my_domain/{account_id}/item/{item_id}/closed/ my_domain/{account_id}/item/{item_id}/snoozed/ 

Пользователи должны иметь возможность изменить account_id или item_id. Поэтому я хочу иметь возможность перезагрузить страницу, только меняя параметры (идентификаторы). Как мне этого добиться?

Просто:

 import { Router } from '@angular/router'; ... export class YourComponent{ constructor(public router: Router) { } ... myRouteMethod(accountId, itemId, endpointUrl){ // Use String literals this.router.navigate([`/${accountId}/item/${itemId}/${endpointUrl}/`]); } } 

В вашем HTML вы можете иметь:

 {amp}lt;div class="wrap"{amp}gt; {amp}lt;div (click)="myRouteMethod(accountIdSomehow, itemIdSomeHow, 'open')"{amp}gt; open {amp}lt;/div{amp}gt; {amp}lt;div (click)="myRouteMethod(accountIdSomehow, itemIdSomeHow, 'close')"{amp}gt; close {amp}lt;/div{amp}gt; {amp}lt;div (click)="myRouteMethod(accountIdSomehow, itemIdSomeHow, 'other')"{amp}gt; other {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; 

Было бы полезно узнать, как вы получаете accountId и itemId. Многократно используемые функции помогут, всегда думайте о параметрах, а не повторяйте, хитрость заключается в настройке ваших шаблонов для динамической работы с вашим компонентом.

Угловой 8

в .component.ts
Вы можете использовать текущий URL и поставить параметр для навигации по массиву

 this.router.navigate([this.router.url, 'open']); 

или в .component.html
Вы можете использовать точку как часть URL «./youparam» — в этом случае «./» == текущий URL

 {amp}lt; a [routerLink]="['./open']"{amp}gt;open{amp}lt;/a{amp}gt;