mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';
|
|
import {ApplicationRef} from '@angular/core';
|
|
|
|
import {BaseException} from '../src/facade/exceptions';
|
|
import {Type} from '../src/facade/lang';
|
|
|
|
import {ROUTER_PRIMARY_COMPONENT, RouteRegistry} from './route_registry';
|
|
import {RootRouter, Router} from './router';
|
|
|
|
|
|
/**
|
|
* The Platform agnostic ROUTER PROVIDERS
|
|
*/
|
|
export const ROUTER_PROVIDERS_COMMON: any[] = /*@ts2dart_const*/[
|
|
RouteRegistry,
|
|
/* @ts2dart_Provider */ {provide: LocationStrategy, useClass: PathLocationStrategy}, Location, {
|
|
provide: Router,
|
|
useFactory: routerFactory,
|
|
deps: [RouteRegistry, Location, ROUTER_PRIMARY_COMPONENT, ApplicationRef]
|
|
},
|
|
{
|
|
provide: ROUTER_PRIMARY_COMPONENT,
|
|
useFactory: routerPrimaryComponentFactory,
|
|
deps: /*@ts2dart_const*/ ([ApplicationRef])
|
|
}
|
|
];
|
|
|
|
function routerFactory(
|
|
registry: RouteRegistry, location: Location, primaryComponent: Type,
|
|
appRef: ApplicationRef): RootRouter {
|
|
var rootRouter = new RootRouter(registry, location, primaryComponent);
|
|
appRef.registerDisposeListener(() => rootRouter.dispose());
|
|
return rootRouter;
|
|
}
|
|
|
|
function routerPrimaryComponentFactory(app: ApplicationRef): Type {
|
|
if (app.componentTypes.length == 0) {
|
|
throw new BaseException('Bootstrap at least one component before injecting Router.');
|
|
}
|
|
return app.componentTypes[0];
|
|
}
|