/** * This indirection is needed to free up Component, etc symbols in the public API * to be used by the decorator versions of these annotations. */ import {makeDecorator} from 'angular2/src/core/util/decorators'; import {CanActivate as CanActivateAnnotation} from './lifecycle_annotations_impl'; import {Promise} from 'angular2/src/facade/async'; import {ComponentInstruction} from './instruction'; export { canReuse, canDeactivate, onActivate, onReuse, onDeactivate } from './lifecycle_annotations_impl'; /** * Defines route lifecycle hook `CanActivate`, which is called by the router to determine * if a component can be instantiated as part of a navigation. * * * * The `CanActivate` hook is called with two {@link ComponentInstruction}s as parameters, the first * representing the current route being navigated to, and the second parameter representing the * previous route or `null`. * * ```typescript * @CanActivate((next, prev) => boolean | Promise) * ``` * * If `CanActivate` returns or resolves to `false`, the navigation is cancelled. * If `CanActivate` throws or rejects, the navigation is also cancelled. * If `CanActivate` returns or resolves to `true`, navigation continues, the component is * instantiated, and the {@link OnActivate} hook of that component is called if implemented. * * ### Example * * {@example router/ts/can_activate/can_activate_example.ts region='canActivate' } */ export var CanActivate: (hook: (next: ComponentInstruction, prev: ComponentInstruction) => Promise| boolean) => ClassDecorator = makeDecorator(CanActivateAnnotation);