2017-04-11 20 views
2

是否可以通過同一個routerLink刷新組件映射?假設這樣的情況:如何刷新路由器的組件映射

  1. 我有一些路由:

    const appRoutes: Routes = [ 
        //other Routes... 
        {path: 'some/:formCode', component: SomeComponent}, 
        //other Routes... 
    ] 
    
  2. 用戶輸入鏈接/some/dwa21e。應用程序根據dwa21e代碼動態地加載表單。顯示動態表單(代碼唯一)。

  3. 用戶可以填寫表格。完成表單時,其他操作在SomeComponent中執行,但在表單外部執行。

  4. 用戶嘗試提交表單。有兩個選項:

    • 驗證不正確:顯示的錯誤消息。 SomeComponent保持與提交之前相同的狀態。

    • 驗證正確: SomeComponent返回其狀態在

我有重定向問題/some/dwa21e正確的形式提交後。如果我嘗試重定向到當前網址,則什麼都不會發生。 是否可以刷新組件到初始狀態?也許,有沒有其他方法可以做到這一點?

我想強調,該結算方式是遠遠不夠的,因爲從3點行動

+0

請編輯該問題,將其限制爲具有足夠的細節以識別適當答案的特定問題。避免一次詢問多個不同的問題。請參閱如何問問頁面以獲取幫助以澄清此問題。 –

+1

我不知道這個問題有什麼問題嗎?我問一個具體的問題:我怎樣才能通過路由器刷新組件映射到初始狀態。我舉了幾個例子(分步驟)來解釋這個問題。請指定什麼是錯誤的,以便我可以正確糾正問題。 –

回答

0

你應該有分量的空航線。 此組件將重定向到/some/dwa21engOnInit(); 只需將dwa21e參數值發送到該空白組件即可重定向到帶有值的/some

據我所知,沒有辦法刷新組件,除非刷新整個頁面。

+1

我認爲,這是巧妙的解決方法。我會試着讓你知道它是否有效。是的,我忘了寫,刷新整個頁面不是一個選項。 –

0

當想要刷新組件時,該選項用於訂閱路由參數。這將使您能夠再次觸發您的ngOnInit()中的代碼。

import { ActivatedRoute } from '@angular/router'; 
... 
currentId: string; 

constructor(private _route: ActivatedRoute) { 
    this.currentId = _route.snapshot.params['id']; 
} 

ngOnInit() { 
    this._route.params.subscribe(params => { 
     this.currentId = params['id']; 
     this.functionToLoad(); 
    } 
}