2017-02-17 52 views
0

我在Angular2中遇到CanDeActivate()的問題。該情景是當用戶從編輯屏幕離開頁面時,彈出窗口出現「是」,「否」和「取消」按鈕。 當用戶點擊取消按鈕時,它會關閉彈出窗口,當用戶點擊沒有按鈕時,它會關閉彈出窗口並重定向到用戶點擊導航的另一個頁面。CanDeActivate()在同一條路線上只運行一次

假設應用程序有3個模塊A,B和C.模塊C有編輯屏幕。當用戶在該頁面上編輯並且不保存用戶對模塊B的點擊時。彈出窗口隨附有是,否和取消按鈕。在取消按鈕它保持在同一頁面,但用戶再次點擊模塊B沒有發生在這裏。如果用戶點擊模塊A彈出來。

我陷入了這個問題。如果有人能幫忙,我會分享我的代碼。這將非常感激。提前致謝。

MyComponent.ts

canDeactivate:() => Observable<boolean> | Promise<boolean> | boolean =() => { 
     if (this.isEdited) { 
      this.showConfirmationModal = true; 
      this.canLeavePage.asObservable().first(); 
      return false; 
     } 
     return true; 
    } 

燦Deactivate.guard.ts

export interface CanComponentDeactivate { 
    canDeactivate:() => Observable<boolean> | Promise<boolean> | boolean; 
} 

@Injectable() 
export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> { 
    canDeactivate(component: CanComponentDeactivate) { 
     let can = component.canDeactivate(); 
     if (!can) { 
      return false; 
     } 

     return true; 
    } 
} 
+0

您使用的是最新的Angular2版本嗎? –

回答