File tree Expand file tree Collapse file tree 5 files changed +22
-8
lines changed
Expand file tree Collapse file tree 5 files changed +22
-8
lines changed Original file line number Diff line number Diff line change @@ -884,7 +884,7 @@ export class KeyValueDiffers {
884884export const LOCALE_ID: InjectionToken <string >;
885885
886886// @public
887- export function makeEnvironmentProviders(providers : Provider []): EnvironmentProviders ;
887+ export function makeEnvironmentProviders(providers : ( Provider | EnvironmentProviders ) []): EnvironmentProviders ;
888888
889889// @public
890890export enum MissingTranslationStrategy {
Original file line number Diff line number Diff line change @@ -352,7 +352,7 @@ export type EnvironmentProviders = {
352352} ;
353353
354354export interface InternalEnvironmentProviders extends EnvironmentProviders {
355- ɵproviders : Provider [ ] ;
355+ ɵproviders : ( Provider | EnvironmentProviders ) [ ] ;
356356
357357 /**
358358 * If present, indicates that the `EnvironmentProviders` were derived from NgModule providers.
@@ -362,8 +362,9 @@ export interface InternalEnvironmentProviders extends EnvironmentProviders {
362362 ɵfromNgModule ?: true ;
363363}
364364
365- export function isEnvironmentProviders ( value : Provider | InternalEnvironmentProviders ) :
366- value is InternalEnvironmentProviders {
365+ export function isEnvironmentProviders (
366+ value : Provider | EnvironmentProviders |
367+ InternalEnvironmentProviders ) : value is InternalEnvironmentProviders {
367368 return value && ! ! ( value as InternalEnvironmentProviders ) . ɵproviders ;
368369}
369370
Original file line number Diff line number Diff line change @@ -28,7 +28,8 @@ import {INJECTOR_DEF_TYPES} from './internal_tokens';
2828 * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally
2929 * referenced in `@Component in a component injector.
3030 */
31- export function makeEnvironmentProviders ( providers : Provider [ ] ) : EnvironmentProviders {
31+ export function makeEnvironmentProviders ( providers : ( Provider | EnvironmentProviders ) [ ] ) :
32+ EnvironmentProviders {
3233 return {
3334 ɵproviders : providers ,
3435 } as unknown as EnvironmentProviders ;
Original file line number Diff line number Diff line change @@ -516,8 +516,7 @@ function couldBeInjectableType(value: any): value is ProviderToken<any> {
516516}
517517
518518function forEachSingleProvider (
519- providers : Array < Provider | InternalEnvironmentProviders > ,
520- fn : ( provider : SingleProvider ) => void ) : void {
519+ providers : Array < Provider | EnvironmentProviders > , fn : ( provider : SingleProvider ) => void ) : void {
521520 for ( const provider of providers ) {
522521 if ( Array . isArray ( provider ) ) {
523522 forEachSingleProvider ( provider , fn ) ;
Original file line number Diff line number Diff line change @@ -24,7 +24,12 @@ const collectEnvironmentInitializerProviders = (providers: Provider[]) =>
2424 getProvidersByToken ( providers , ENVIRONMENT_INITIALIZER ) ;
2525
2626function unwrappedImportProvidersFrom ( ...sources : ImportProvidersSource [ ] ) : Provider [ ] {
27- return ( importProvidersFrom ( ...sources ) as unknown as InternalEnvironmentProviders ) . ɵproviders ;
27+ const providers =
28+ ( importProvidersFrom ( ...sources ) as unknown as InternalEnvironmentProviders ) . ɵproviders ;
29+ if ( providers . some ( provider => 'ɵproviders' in provider ) ) {
30+ throw new Error ( `Unexpected nested EnvironmentProviders in test` ) ;
31+ }
32+ return providers as Provider [ ] ;
2833}
2934
3035describe ( 'importProvidersFrom' , ( ) => {
@@ -343,6 +348,14 @@ describe('EnvironmentProviders', () => {
343348 expect ( inj . get ( TOKEN ) ) . toEqual ( 'token!' ) ;
344349 } ) ;
345350
351+ it ( 'should be accepted as additional input to makeEnvironmentProviders' , ( ) => {
352+ const wrappedProviders = makeEnvironmentProviders ( [ environmentProviders ] ) ;
353+ TestBed . configureTestingModule ( { } ) ;
354+
355+ const inj = createEnvironmentInjector ( [ wrappedProviders ] , TestBed . inject ( EnvironmentInjector ) ) ;
356+ expect ( inj . get ( TOKEN ) ) . toEqual ( 'token!' ) ;
357+ } ) ;
358+
346359 it ( 'should be overridable by TestBed overrides' , ( ) => {
347360 TestBed . configureTestingModule ( {
348361 providers : [ environmentProviders ] ,
You can’t perform that action at this time.
0 commit comments