2017-06-14 79 views
0

我工作在角2.我面對的是,我從父母調用子組件的函數。和子功能更新我的數據集,最初加載HTML。但是當我站在同一個html上並再次調用該函數時,它在控制檯中顯示該數據集已加載新數據但未加載其html。 完整的場景: 我在我的標題部分有一個搜索欄。從重定向到結果頁面的位置以及調用其顯示查詢數據的函數。但是當我已經搜索過查詢並且站在結果頁面上時。新的數據查詢將再次調用該函數,數據集將被更新。但組件不會根據該數據集重新加載html。我如何重新加載它? 有什麼建議。? 這裏是代碼示例。 我header.ts爲什麼在更新後DOM不更新在角度2中設置數據?

Search(){ 
localStorage.setItem('val',JSON.stringify(this.query)); 

this.router.navigate(['/results']); 
this.mobiles.ngOnInit(); 

     } 


} 

resuls.ts

ngOnInit() { 


     this.query=JSON.parse(localStorage.getItem('val')); 
alert(this.query) 

this.httpService.searchGeneric(this.query,1).subscribe(
     data => { 
     this.Getspecs = data; 

    this.count=data['totalItems']; 

    this.ref.detectChanges(); 
     this.ref.reattach(); 

    console.log(data) 

    } 
    ); 

爲什麼新的更改不會出現在結果成分的HTML?有沒有人有這個想法?需要任何幫助。謝謝。

+0

您是否在調用結果頁面上的函數後重新路由到同一頁面。如果你在一個組件上,並且你重新加載了相同的組件,Angular不會刷新你的綁定。它的性能改進不會再爲已經加載的組件刷新綁定。 –

+0

閱讀[https://angular.io/guide/router#observable-params-and-component-reuse]這將告訴你實現你想要的方式。 –

回答

0

這是Angular的工作方式。

您正在使用相同的功能,這意味着您將重新路由到相同的組件。

如果你在一個組件上,並且你重新加載了相同的組件,Angular不會刷新你的綁定。它的性能改進不會再爲已經加載的組件刷新綁定。

但是,角度確實提供了一種方法,以防您需要在重新加載時明確更改綁定。您可以使用params觀察到並訂閱params關於路線更改。此訂閱中的任何操作都將強制更改綁定。

更多信息here at Angular official docs。

+0

任何簡單的例子?或者您可能會在我的代碼中提供的任何修改? – maadi