// Allow the user to navigate away from this page public canDeactivate(): Observable<boolean> { // Popup a prompt dialog const title = 'Lose Changes'; const prompt = 'Are you sure you want to lose your changes?'; this.dialogWindow.show(EDialogTypes.EDialogYesNo, EDialogStyles.EDialogStyleWarning, title, prompt); return Observable.create(observer => { this.dialogWindow.observable.subscribe(buttonPressed => { const proceed = (buttonPressed === EButtonPressed.EButtonPressedYes); console.log('Allow proceed: ' + proceed); observer.next(proceed); observer.complete(); }); }); }
您可以保存对变量的订阅,并在获得所需内容后使用它取消订阅。类似这样:
return Observable.create(observer => { let subscription = this.dialogWindow.observable.subscribe(buttonPressed => { const proceed = (buttonPressed === EButtonPressed.EButtonPressedYes); console.log('Allow proceed: ' + proceed); observer.next(proceed); observer.complete() subscription.unsubscribe(); // here you unsubscribe }); });