角路由器。如何导航到具有不同参数的当前URL?

时间:2018-06-19 22:27:33

标签: javascript angular typescript url-routing

我有一个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。因此,我希望能够仅更改参数(ID)来重新加载页面。我该如何实现?

2 个答案:

答案 0 :(得分:1)

简单:

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上,您可以:

<div class="wrap">
<div (click)="myRouteMethod(accountIdSomehow, itemIdSomeHow, 'open')">
open </div>
<div (click)="myRouteMethod(accountIdSomehow, itemIdSomeHow, 'close')"> close </div>
<div (click)="myRouteMethod(accountIdSomehow, itemIdSomeHow, 'other')"> other </div>
</div>

了解您如何获取accountId和itemId很有用。 可重用的功能会有所帮助,始终考虑参数而不是重复,技巧是调整模板以使其与组件动态配合。

答案 1 :(得分:0)

Angular 8

.component.ts
中 您可以使用当前网址,然后将param放入数组中

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

.component.html
中 您可以将点用作网址“ ./youparam”的一部分-在本例中为“ ./”==当前网址

< a [routerLink]="['./open']">open</a>