2017-02-17 24 views
0

CanDeActivate()の問題が発生しました。Angular2です。シナリオは、ユーザーが編集画面からページを離れるときで、ポップアップには「はい」、「いいえ」、および「キャンセル」ボタンが付いています。 ユーザーがキャンセルボタンをクリックすると、ポップアップが閉じられ、ユーザーがボタンをクリックしないと、ポップアップが閉じられ、ユーザーがクリックしてナビゲートする別のページにリダイレクトされます。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; 
    } 

CAN-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バージョンを使用していますか? –

答えて

関連する問題