2

我使用'routerLink'來導航我的路線,它工作正常。但是當我再次點擊同一個按鈕時,我希望該組件再次加載。但目前,它在angular2中不起作用。角度2:當重定向到相同的路由時再次重新載入相同的組件

app.component.html

<ul class="nav navbar-nav navbar-right"> 
      <li><a [routerLink]="['/events']" routerLinkActive="active" [routerLinkActiveOptions]="{exact:true}">All Events</a></li> 
      <li><a [routerLink]="['/events/new']" routerLinkActive="active" [routerLinkActiveOptions]="{exact:true}">Create New</a></li> 
</ul> 

我想,當我每一次點擊 '所有活動' 選項卡上,一遍又一遍,活動部件的負載。

如何在angular2中實現這種情況?

+0

爲什麼你想要一次又一次加載相同的組件? –

+0

請看這篇文章其類似https://stackoverflow.com/questions/47855240/angular-force-load-of-same-route?noredirect=1&lq=1 –

回答

4

我想,當我點擊「所有事件」選項卡時,每次都會加載事件組件。

這是angular2 Not Possible,原因是一旦你加載,一旦你從其他途徑再次導航到該路由組件只裝任何部件。

但是你可以重新加載強行

基本上有兩種方法,這是

  • 可以再次ngOnInit()方法並再次按需要調用,這是不推薦的方式

  • 你可以根據需要調用ngOnInit()以後的常用方法在功能再這樣

    ngOnInit(){ 
        this.callingFunction(); 
    } 
    
    forLaterUse(){ 
        this.callingFunction(); 
    } 
    

另一種方式是,如果要加載的PARAM變化相同組件,您可以在構造函數中使用這個

this.route.params.subscribe((params: Params) => { 
    console.log(params); 
    this.callingFunction(); 
    // this will be called every time route changes 
    // so you can perform your functionality here 

}); 
1

在這裏看到:How to reload the current route with the angular 2 router

總結 - 它不是內置在路由器中的功能。聽起來最好的選擇是使用可以刷新或重新獲取任何相關數據的服務,如果有任何更改,Angular會自動更新視圖。

如果有人說Angular中不可能有東西,那幾乎總是不正確的。使用目前現有的解決方案是不可能的。 ;-)

+0

'如果有人說在Angular中不可能的東西,那幾乎總是不真實,但根據情況,這在角度方面是不可能的。 –

+1

是的,我只是在厚臉皮。 :-P。畢竟你確實提供瞭解決方案 – diopside

0

我不明白你爲什麼要重新加載相同的組件,但我的方法(雖然不是很好)將創建一個不同的路線來重新加載相同的組件。因此,首先在你的路由處理,導入您的組件:

(導入此^路由器到您的應用程序模塊)

現在,當你在頁面/:參數'你可以路由到頁面/ reload /:參數',反之亦然。這可以讓你重新加載相同的組件。

相關問題