fix: don't instantiate providers with ngOnDestroy eagerly. (#15070)
BREAKING CHANGE: Perviously, any provider that had an ngOnDestroy lifecycle hook would be created eagerly. Now, only classes that are annotated with @Component, @Directive, @Pipe, @NgModule are eager. Providers only become eager if they are either directly or transitively injected into one of the above. This also makes all `useValue` providers eager, which should have no observable impact other than code size. EXPECTED IMPACT: Making providers eager was an incorrect behavior and never documented. Also, providers that are used by a directive / pipe / ngModule stay eager. So the impact should be rather small. Fixes #14552
This commit is contained in:

committed by
Chuck Jazdzewski

parent
0aad270267
commit
2c5a671341
@ -121,6 +121,7 @@ export declare class ApplicationInitStatus {
|
||||
|
||||
/** @experimental */
|
||||
export declare class ApplicationModule {
|
||||
constructor(appRef: ApplicationRef);
|
||||
}
|
||||
|
||||
/** @stable */
|
||||
|
@ -308,7 +308,7 @@ export declare class RouterLinkWithHref implements OnChanges, OnDestroy {
|
||||
|
||||
/** @stable */
|
||||
export declare class RouterModule {
|
||||
constructor(guard: any);
|
||||
constructor(guard: any, router: Router);
|
||||
static forChild(routes: Routes): ModuleWithProviders;
|
||||
static forRoot(routes: Routes, config?: ExtraOptions): ModuleWithProviders;
|
||||
}
|
||||
|
Reference in New Issue
Block a user