簡體   English   中英

如果在同一組件上,Angular router.navigate 不會路由到解析器

[英]Angular router.navigate doesn't route to resolver if on same component

我從頁面頂部的導航欄組件執行搜索。 從導航欄輸入搜索條件時,我可以路由到我的“成員”組件頁面,但是一旦我進入“成員”組件並更改查詢參數並嘗試再次運行 router.navigate() 就可以了讓 Angular 擊中我的解析器。

這是我所做的以及我在導航調用上方嘗試的操作,無論是 shouldReuseRoute 還是 onSameUrlNavigation 似乎都無法再次在組件上點擊我的解析器。

問題是——應該嗎? 因為也許我在某處有其他錯誤!

 // tried with no luck this.router.routeReuseStrategy.shouldReuseRoute = () => false; // tried with no luck this.router.onSameUrlNavigation = 'reload'; this.router.navigate(['/members'], { queryParams: { latitude: this.locationLatitude, longitude: this.locationLongitude, gender: this.gender, minAge: this.ageFrom, maxAge: this.ageTo, orderBy: this.orderBy } });

您將需要訂閱查詢參數更改

constructor(
    private activatedRoute: ActivatedRoute,
) { }

this.activatedRoute.queryParams.subscribe(params => {
    console.log(params);
    // logic after subscribing
});

所以基本上任何時候你改變 queryParams 它都會觸發那個訂閱,你可以從那里運行你的邏輯

實際上,在這些情況下會調用解析器。 您可以通過調試器簡單地檢查它。 我最近遇到了類似的問題,我的解析器中有一個錯誤,組件中有另一個錯誤(如@smokey-dawson所寫-在我的情況下,我錯過了對 route.data 的訂閱)

路由可以將runGuardsAndResolvers屬性設置為always以始終在導航上運行警衛和解析器。 默認情況下,它們在路由或路由參數更改時運行。

{
  path: 'some/path/:and/:id',
  component: MemberComponent,
  ...
  runGuardsAndResolvers: 'always'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM