Angular2 CanDeactivate with async observable

时间:2016-09-09 18:27:35

标签: angular observable angular-routing angular2-observables angular2-guards

我正在调查Guards并尝试阻止CanDeactivate导航。我想用Save / Cancel显示一个简单的模态,save = navigate and well,cancel = cancel。

我的CanDeactivate工作正常,但似乎没有在合适的时间解决

Guard.ts

canDeactivate(component: PortfolioModelComponent) {
    component.saveChanges(); // Opens modal
    return component.modalResponse.take(1); // isnt happening at the right time
}

Component.ts

 public modalResponse: Observable<boolean> = new Observable((observer) => { });

public saveChanges() {
    this.openSaveChangeModal();
}

// Modal save changes
public openSaveChangeModal() {
    $('#savePortfolioChangesModal').modal();
}

public closeSaveChangesModal() {
     this.modalResponse = new Observable((observer) => {
        observer.next(false);
    });
    $('#savePortfolioChangesModal').modal('hide');
}

public saveSaveChangesModal() {
    this.modalResponse = new Observable((observer) => {
        observer.next(true);
    });
    $('#savePortfolioChangesModal').modal('hide');
}

在第一个“保存”中,一旦显示模态,就不会发生任何事情。 在第二个“保存”,导航将在我回答模态之前发生。 如何在合适的时间解决问题?

0 个答案:

没有答案