2017-04-06 78 views
2

在我的angular 2項目中,我無法通過導航到相同的URL但使用不同的查詢參數來重新加載頁面。我正在使用解析在加載頁面時預取數據。查詢參數更改後重新解析數據?

我試圖讓解析器在URL(查詢參數)更改時重新獲取數據。我該怎麼做呢?

回答

0

我認爲你不能改變queryParam。我不知道這是否有助於你,但這是我的答案。

construtor(private route: ActivatedRoute) { } 

ngOnInit() { 

    this.route.snapshot.queryParams['something'];//when you snapshot and navigate to same url you can't get new query params, only for first initialization 

    // to get new queryparams or url params also you need subscribe (for same url navigation) 

    this.route.queryParams.subscribe({ 
     (queryParams: Params) => { 
      this.yourParam = queryParams['something']; 
     } 
    }) 
} 

我認爲你正在使用快照,而不是可觀察queryParams這就是爲什麼的。

0

現在你可以使用這個在您的路線配置:

{ 
    path: '', 
    resolve: { 
    data : DataResolver, 
    }, 
    runGuardsAndResolvers: 'paramsOrQueryParamsChange', 
    component: MainComponent 
} 

過客「paramsOrQueryParamsChange」在你的路線配置將觸發在每個params中,queryParams變化DataResolver。
就可以得到解析器的數據在你的MainComponent這樣的:

ngOnInit() { 
    this.activatedRoute.data.subscribe((resolversData) => { 
    // is now triggered at each queryParams change 
    }) 
} 

see the doc for more info

+0

我很欣賞你張貼的鏈接文檔以獲得更多信息,但您可以提供該鏈接的一些背景。 – Daniel

+0

當然:)我做了一個編輯@Daniel – GautierDab