具有异步可观测的Angular2 CanDeactivate
我正在调查警卫,试图阻止CanDeactivate的导航。我想用Save/Cancel,Save=navigate和well,Cancel=Cancel来显示一个简单的模式 我已经让CanDeactivate工作了,但它似乎没有在正确的时间解决 卫兵具有异步可观测的Angular2 CanDeactivate,angular,observable,angular-routing,angular2-observables,angular2-guards,Angular,Observable,Angular Routing,Angular2 Observables,Angular2 Guards,我正在调查警卫,试图阻止CanDeactivate的导航。我想用Save/Cancel,Save=navigate和well,Cancel=Cancel来显示一个简单的模式 我已经让CanDeactivate工作了,但它似乎没有在正确的时间解决 卫兵 canDeactivate(component: PortfolioModelComponent) { component.saveChanges(); // Opens modal return component.modalRe
canDeactivate(component: PortfolioModelComponent) {
component.saveChanges(); // Opens modal
return component.modalResponse.take(1); // isnt happening at the right time
}
组件技术
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');
}
publicmodalresponse:Observable=新的Observable((observator)=>{});
公共存储更改(){
这个参数为.opensavechangemodel();
}
//模式保存更改
公共openSaveChangeModal(){
$('#savePortfolioChangesModal').modal();
}
public closeSaveChangesModal(){
this.modalResponse=新的可观察对象((观察者)=>{
观察者:下一个(假);
});
$('#savePortfolioChangesModal').modal('hide');
}
公共savechangesmodal(){
this.modalResponse=新的可观察对象((观察者)=>{
观察者:下一个(正确);
});
$('#savePortfolioChangesModal').modal('hide');
}
在第一次“保存”时,一旦显示模式,就不会发生任何事情。
在第二次“保存”时,导航将在我回答模态之前进行。
如何在正确的时间解决问题?您应该在
saveChanges()
方法中返回modalResponse
。