2017-08-01 54 views
1

有條件地選擇數據假設以下路線:從商店或API中的角

/cars/3

如果我要修改這個項目,我可以簡單地包括在模板編輯表單,並通過汽車項目作爲輸入,像這樣:

<edit-car [car]="car"></edit-car>

如果我利用下列路線代替:

/cars/3/edit-car

該組件需要接收汽車項目的信息。如果說我從細節成分爲編輯組件導航的話,那是沒有問題的搶從商店的乘用車項目信息:

car$ = this.store.select(fromRoot.getCar)

但是,如果有人瀏覽到/cars/3,然後改變路線到/cars/4/edit-car,編輯組件仍然會填入汽車3的信息。

在這種情況下,我需要從API獲取Car 4的信息。

爲什麼有人會隨意更改url參數?我不知道。我只是好奇我的選擇是爲了解決這個問題。

回答

1

你可以通過與路由器的一些非常簡潔的交互來解決這個問題。例如你的路由器應該是這樣

{ path: 'editcar', component: editcar, canDeactivate: [CanDeactivateService] }, 
{ path: 'editcar/:id', component: editcar, canDeactivate: [CanDeactivateService] } 

然後在你的ngOnInit可以使用訂閱監視URL路徑 你需要導入import { Router, ActivatedRoute, Params } from '@angular/router';

this.routeSubscription = this._activatedRoute.params.subscribe((params: Params) => { 
    if (+params['id'] >= 0) { 
    this.selectedCar = +params['id']; 
    } else { 
    this.selectedCar = 1; //default 
    } 

從那裏所有有關調用您的API與this.selectedCar