60 lines
1.9 KiB
TypeScript
60 lines
1.9 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 {Injector} from '@angular/core';
|
|
import {INJECTOR_KEY} from './constants';
|
|
|
|
/**
|
|
* @whatItDoes
|
|
*
|
|
* *Part of the [upgrade/static](/docs/ts/latest/api/#!?query=upgrade%2Fstatic)
|
|
* library for hybrid upgrade apps that support AoT compilation*
|
|
*
|
|
* Allow an Angular service to be accessible from AngularJS.
|
|
*
|
|
* @howToUse
|
|
*
|
|
* First ensure that the service to be downgraded is provided in an {@link NgModule}
|
|
* that will be part of the upgrade application. For example, let's assume we have
|
|
* defined `HeroesService`
|
|
*
|
|
* {@example upgrade/static/ts/module.ts region="ng2-heroes-service"}
|
|
*
|
|
* and that we have included this in our upgrade app {@link NgModule}
|
|
*
|
|
* {@example upgrade/static/ts/module.ts region="ng2-module"}
|
|
*
|
|
* Now we can register the `downgradeInjectable` factory function for the service
|
|
* on an AngularJS module.
|
|
*
|
|
* {@example upgrade/static/ts/module.ts region="downgrade-ng2-heroes-service"}
|
|
*
|
|
* Inside an AngularJS component's controller we can get hold of the
|
|
* downgraded service via the name we gave when downgrading.
|
|
*
|
|
* {@example upgrade/static/ts/module.ts region="example-app"}
|
|
*
|
|
* @description
|
|
*
|
|
* Takes a `token` that identifies a service provided from Angular.
|
|
*
|
|
* Returns a [factory function](https://docs.angularjs.org/guide/di) that can be
|
|
* used to register the service on an AngularJS module.
|
|
*
|
|
* The factory function provides access to the Angular service that
|
|
* is identified by the `token` parameter.
|
|
*
|
|
* @experimental
|
|
*/
|
|
export function downgradeInjectable(token: any): Function {
|
|
const factory = function(i: Injector) { return i.get(token); };
|
|
(factory as any).$inject = [INJECTOR_KEY];
|
|
|
|
return factory;
|
|
}
|