The compiler generates a 'token' field when it emits an ngInjectableDef, but this field was not required by defineInjectable or the InjectableDef interface, nor was it added by InjectionToken. This commit makes 'token' required and adds it where missing. PR Close #30855
40 lines
1012 B
TypeScript
40 lines
1012 B
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, ɵcreateInjector as createInjector, ɵɵdefineInjectable, ɵɵdefineInjector} from '@angular/core';
|
|
|
|
export class RootService {
|
|
static ngInjectableDef = ɵɵdefineInjectable({
|
|
token: RootService,
|
|
providedIn: 'root',
|
|
factory: () => new RootService(),
|
|
});
|
|
}
|
|
|
|
export class ScopedService {
|
|
static ngInjectableDef = ɵɵdefineInjectable({
|
|
token: ScopedService,
|
|
providedIn: null,
|
|
factory: () => new ScopedService(),
|
|
});
|
|
|
|
doSomething(): void {
|
|
// tslint:disable-next-line:no-console
|
|
console.log('Ensure this isn\'t tree-shaken.');
|
|
}
|
|
}
|
|
|
|
export class DefinedInjector {
|
|
static ngInjectorDef = ɵɵdefineInjector({
|
|
factory: () => new DefinedInjector(),
|
|
providers: [ScopedService],
|
|
});
|
|
}
|
|
|
|
export const INJECTOR = createInjector(DefinedInjector);
|