mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
BREAKING CHANGE
The ROUTE_DATA token has been removed and replaced with a type RouteData,
allowing a type injection like we do with RouteParams.
Before:
constructor(routeParams: RouteParams, @Inject(ROUTE_DATA) routeData) {
let id = routeParams.get('id');
let name = ROUTE_DATA.name;
}
After:
constructor(routeParams: RouteParams, routeData: RouteData) {
let id = routeParams.get('id');
let name = routeData.get('name');
}
Fixes #4392
Closes #4428
22 lines
700 B
TypeScript
22 lines
700 B
TypeScript
import {RouteHandler} from './route_handler';
|
|
import {Promise, PromiseWrapper} from 'angular2/src/core/facade/async';
|
|
import {isPresent, Type} from 'angular2/src/core/facade/lang';
|
|
|
|
export class AsyncRouteHandler implements RouteHandler {
|
|
/** @internal */
|
|
_resolvedComponent: Promise<any> = null;
|
|
componentType: Type;
|
|
|
|
constructor(private _loader: Function, public data?: {[key: string]: any}) {}
|
|
|
|
resolveComponentType(): Promise<any> {
|
|
if (isPresent(this._resolvedComponent)) {
|
|
return this._resolvedComponent;
|
|
}
|
|
|
|
return this._resolvedComponent = this._loader().then((componentType) => {
|
|
this.componentType = componentType;
|
|
return componentType;
|
|
});
|
|
}
|
|
}
|