The new expression lowering lowers everything after `useValue` / `useFactory` into a separate exported variable. If the value was a `forwardRef`, this was passed to the runtime and resulted in errors. This change unwraps `forwardRef`s during runtime again. Note: we can’t unwrap the `forwardRef` into an exported variable during compile time, as this would defeat the purpose of the `forwardRef` in referring to something that can’t be referred to at this position.
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.2 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 {ApplicationRef, NgModule, forwardRef} from '@angular/core';
 | |
| import {FormsModule} from '@angular/forms';
 | |
| import {MATERIAL_SANITY_CHECKS, MdButtonModule} from '@angular/material';
 | |
| import {ServerModule} from '@angular/platform-server';
 | |
| import {FlatModule} from 'flat_module';
 | |
| // Note: don't refer to third_party_src as we want to test that
 | |
| // we can compile components from node_modules!
 | |
| import {ThirdpartyModule} from 'third_party/module';
 | |
| 
 | |
| import {MultipleComponentsMyComp, NextComp} from './a/multiple_components';
 | |
| import {AnimateCmp} from './animate';
 | |
| import {BasicComp} from './basic';
 | |
| import {ComponentUsingThirdParty} from './comp_using_3rdp';
 | |
| import {ComponentUsingFlatModule} from './comp_using_flat_module';
 | |
| import {CUSTOM} from './custom_token';
 | |
| import {CompWithAnalyzeEntryComponentsProvider, CompWithEntryComponents} from './entry_components';
 | |
| import {BindingErrorComp} from './errors';
 | |
| import {CompConsumingEvents, CompUsingPipes, CompWithProviders, CompWithReferences, DirPublishingEvents, ModuleUsingCustomElements} from './features';
 | |
| import {CompUsingRootModuleDirectiveAndPipe, SomeDirectiveInRootModule, SomeLibModule, SomePipeInRootModule, SomeService} from './module_fixtures';
 | |
| import {CompWithNgContent, ProjectingComp} from './projection';
 | |
| import {CompForChildQuery, CompWithChildQuery, CompWithDirectiveChild, DirectiveForQuery} from './queries';
 | |
| 
 | |
| // Adding an export here so that TypeScript compiles the file as well
 | |
| export {SomeModule as JitSummariesSomeModule} from './jit_summaries';
 | |
| 
 | |
| @NgModule({
 | |
|   declarations: [
 | |
|     AnimateCmp,
 | |
|     BasicComp,
 | |
|     CompConsumingEvents,
 | |
|     CompForChildQuery,
 | |
|     CompUsingPipes,
 | |
|     CompUsingRootModuleDirectiveAndPipe,
 | |
|     CompWithAnalyzeEntryComponentsProvider,
 | |
|     CompWithChildQuery,
 | |
|     CompWithDirectiveChild,
 | |
|     CompWithEntryComponents,
 | |
|     CompWithNgContent,
 | |
|     CompWithProviders,
 | |
|     CompWithReferences,
 | |
|     DirectiveForQuery,
 | |
|     DirPublishingEvents,
 | |
|     MultipleComponentsMyComp,
 | |
|     NextComp,
 | |
|     ProjectingComp,
 | |
|     SomeDirectiveInRootModule,
 | |
|     SomePipeInRootModule,
 | |
|     ComponentUsingFlatModule,
 | |
|     ComponentUsingThirdParty,
 | |
|     BindingErrorComp,
 | |
|   ],
 | |
|   imports: [
 | |
|     ServerModule,
 | |
|     FormsModule,
 | |
|     MdButtonModule,
 | |
|     ModuleUsingCustomElements,
 | |
|     SomeLibModule.withProviders(),
 | |
|     ThirdpartyModule,
 | |
|     FlatModule,
 | |
|   ],
 | |
|   providers: [
 | |
|     SomeService,
 | |
|     {provide: CUSTOM, useValue: forwardRef(() => ({name: 'some name'}))},
 | |
|     // disable sanity check for material because it throws an error when used server-side
 | |
|     // see https://github.com/angular/material2/issues/6292
 | |
|     {provide: MATERIAL_SANITY_CHECKS, useValue: false},
 | |
|   ],
 | |
|   entryComponents: [
 | |
|     AnimateCmp,
 | |
|     BasicComp,
 | |
|     CompUsingRootModuleDirectiveAndPipe,
 | |
|     CompWithAnalyzeEntryComponentsProvider,
 | |
|     CompWithChildQuery,
 | |
|     CompWithEntryComponents,
 | |
|     CompWithReferences,
 | |
|     ProjectingComp,
 | |
|     ComponentUsingThirdParty,
 | |
|     ComponentUsingFlatModule,
 | |
|     BindingErrorComp,
 | |
|   ]
 | |
| })
 | |
| export class MainModule {
 | |
|   constructor(public appRef: ApplicationRef) {}
 | |
| 
 | |
|   ngDoBootstrap() {}
 | |
| }
 |