fix(core): export inject() from @angular/core (#22389)
inject() supports the ngInjectableDef-based configuration of the injector (otherwise known as tree-shakeable services). It was missing from the exported API of @angular/core, this PR adds it. The test added here is correct in theory, but may pass accidentally due to the decorator side-effect replacing the inject() call at runtime. An upcoming compiler PR will strip reified decorators from the output entirely. Fixes #22388 PR Close #22389
This commit is contained in:

committed by
Alex Eagle

parent
7d65356ae3
commit
f8749bfb70
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @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 {Component, Injectable, NgModule} from '@angular/core';
|
||||
import {BrowserModule} from '@angular/platform-browser';
|
||||
import {ServerModule} from '@angular/platform-server';
|
||||
|
||||
@Injectable()
|
||||
export class NormalService {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'dep-app',
|
||||
template: '{{found}}',
|
||||
})
|
||||
export class AppComponent {
|
||||
found: boolean;
|
||||
constructor(service: ShakeableService) { this.found = !!service.normal; }
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
BrowserModule.withServerTransition({appId: 'id-app'}),
|
||||
ServerModule,
|
||||
],
|
||||
declarations: [AppComponent],
|
||||
bootstrap: [AppComponent],
|
||||
providers: [NormalService],
|
||||
})
|
||||
export class DepAppModule {
|
||||
}
|
||||
|
||||
@Injectable({scope: DepAppModule})
|
||||
export class ShakeableService {
|
||||
constructor(readonly normal: NormalService) {}
|
||||
}
|
Reference in New Issue
Block a user