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;
}
}
最新のAngular2バージョンを使用していますか? –