fix(nav): returning Promise<false> in canLeave / canEnter works as expected

This commit is contained in:
Manu Mtz.-Almeida
2016-11-04 20:18:09 +01:00
parent 63d495ae43
commit 5f1a86265c

View File

@ -485,8 +485,13 @@ export class NavControllerBase extends Ion implements NavController {
if (promises.length) { if (promises.length) {
// darn, async promises, gotta wait for them to resolve // darn, async promises, gotta wait for them to resolve
Promise.all(promises) Promise.all(promises)
.then(() => this._postViewInit(enteringView, leavingView, ti, resolve)) .then((values: any[]) => {
.catch(reject); if (values.some(result => result === false)) {
reject(`ionViewCanEnter rejected`);
} else {
this._postViewInit(enteringView, leavingView, ti, resolve);
}
}).catch(reject);
} else { } else {
// synchronous and all tests passed! let's move on already // synchronous and all tests passed! let's move on already
this._postViewInit(enteringView, leavingView, ti, resolve); this._postViewInit(enteringView, leavingView, ti, resolve);