Skip to content

Commit deba804

Browse files
committed
feat(router): add CanDeactivate
1 parent e5b87e5 commit deba804

4 files changed

Lines changed: 9 additions & 2 deletions

File tree

modules/angular2/src/alt_router/interfaces.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,9 @@ import {RouteSegment, Tree} from './segments';
33
export interface OnActivate {
44
routerOnActivate(curr: RouteSegment, prev?: RouteSegment, currTree?: Tree<RouteSegment>,
55
prevTree?: Tree<RouteSegment>): void;
6+
}
7+
8+
export interface CanDeactivate {
9+
routerCanDeactivate(currTree?: Tree<RouteSegment>,
10+
futureTree?: Tree<RouteSegment>): Promise<boolean>;
611
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import './interfaces.dart';
22
bool hasLifecycleHook(String name, Object obj) {
33
if (name == "routerOnActivate") return obj is OnActivate;
4+
if (name == "routerCanDeactivate") return obj is CanDeactivate;
45
return false;
56
}

modules/angular2/src/alt_router/lifecycle_reflector.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import {Type} from 'angular2/src/facade/lang';
1+
import {Type, isBlank} from 'angular2/src/facade/lang';
22

33
export function hasLifecycleHook(name: string, obj: Object): boolean {
4+
if (isBlank(obj)) return false;
45
let type = obj.constructor;
56
if (!(type instanceof Type)) return false;
67
return name in(<any>type).prototype;

modules/angular2/src/router/lifecycle/route_lifecycle_reflector.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Type, isPresent} from 'angular2/src/facade/lang';
1+
import {Type, isBlank} from 'angular2/src/facade/lang';
22
import {RouteLifecycleHook, CanActivate} from './lifecycle_annotations_impl';
33
import {reflector} from 'angular2/src/core/reflection/reflection';
44

0 commit comments

Comments
 (0)