refactor(core): support non reflective bootstrap.

This changes Angular so that it can be used without reflection (assuming a codegen for injectors).

BREAKIKNG CHANGE:
- Drops `APP_COMPONENT` provider. Instead, inject
  `ApplicationRef` and read its `componentTypes` property.
- long form bootstrap has changed into the following:
  ```
  var platform = createPlatform(ReflectiveInjector.resolveAndCreate(BROWSER_PROVIDERS));
  var appInjector =
    ReflectiveInjector.resolveAndCreate([BROWSER_APP_PROVIDERS, appProviders], platform.injector);
  coreLoadAndBootstrap(appInjector, MyApp);
  ```
This commit is contained in:
Tobias Bosch
2016-04-14 14:52:35 -07:00
parent 0a7d10ba55
commit 9092ac79d4
73 changed files with 784 additions and 649 deletions

View File

@ -29,13 +29,15 @@ const CORE = [
'AfterViewInit',
'AfterViewInit.ngAfterViewInit():any',
'ApplicationRef',
'ApplicationRef.bootstrap(componentType:Type, providers:Array<Type|Provider|any[]>):Promise<ComponentRef>',
'ApplicationRef.bootstrap(componentFactory:ComponentFactory):ComponentRef',
'ApplicationRef.componentTypes:Type[]',
'ApplicationRef.dispose():void',
'ApplicationRef.injector:Injector',
'ApplicationRef.registerBootstrapListener(listener:(ref: ComponentRef) => void):void',
'ApplicationRef.registerDisposeListener(dispose:() => void):void',
'ApplicationRef.tick():void',
'ApplicationRef.run(callback:Function):any',
'ApplicationRef.waitForAsyncInitializers():Promise<any>',
'ApplicationRef.zone:NgZone',
'AttributeMetadataFactory',
'AttributeMetadata',
@ -157,7 +159,7 @@ const CORE = [
'DoCheck',
'DoCheck.ngDoCheck():any',
'DynamicComponentLoader',
'DynamicComponentLoader.loadAsRoot(type:Type, overrideSelectorOrNode:string, injector:Injector, onDispose:() => void, projectableNodes:any[][]):Promise<ComponentRef>',
'DynamicComponentLoader.loadAsRoot(type:Type, overrideSelectorOrNode:string|any, injector:Injector, onDispose:() => void, projectableNodes:any[][]):Promise<ComponentRef>',
'DynamicComponentLoader.loadNextToLocation(type:Type, location:ViewContainerRef, providers:ResolvedReflectiveProvider[], projectableNodes:any[][]):Promise<ComponentRef>',
'ElementRef',
'ElementRef.nativeElement:any',
@ -274,6 +276,7 @@ const CORE = [
'NgZone.onMicrotaskEmpty:EventEmitter<any>',
'NgZone.onUnstable:EventEmitter<any>',
'NgZone.run(fn:() => any):any',
'NgZone.runGuarded(fn:() => any):any',
'NgZone.runOutsideAngular(fn:() => any):any',
'NgZoneError',
'NgZoneError.constructor(error:any, stackTrace:any)',
@ -306,11 +309,10 @@ const CORE = [
'PipeTransform',
'PipeTransform.transform(value:any, args:any[]):any',
'PlatformRef',
'PlatformRef.application(providers:Array<Type|Provider|any[]>):ApplicationRef',
'PlatformRef.asyncApplication(bindingFn:(zone: NgZone) => Promise<Array<Type | Provider | any[]>>, providers:Array<Type|Provider|any[]>):Promise<ApplicationRef>',
'PlatformRef.dispose():void',
'PlatformRef.injector:Injector',
'PlatformRef.registerDisposeListener(dispose:() => void):void',
'PlatformRef.disposed:boolean',
'Provider',
'Provider.constructor(token:any, {useClass,useValue,useExisting,useFactory,deps,multi}:{useClass?:Type, useValue?:any, useExisting?:any, useFactory?:Function, deps?:Object[], multi?:boolean})',
'Provider.dependencies:Object[]',
@ -493,7 +495,6 @@ const CORE = [
'WrappedValue.wrap(value:any):WrappedValue',
'bind(token:any):ProviderBuilder',
'const APPLICATION_COMMON_PROVIDERS:Array<Type|Provider|any[]>',
'const APP_COMPONENT:OpaqueToken',
'const APP_ID:OpaqueToken',
'const APP_INITIALIZER:OpaqueToken',
'const PACKAGE_ROOT_URL:OpaqueToken',
@ -504,7 +505,12 @@ const CORE = [
'createNgZone():NgZone',
'enableProdMode():any',
'forwardRef(forwardRefFn:ForwardRefFn):Type',
'platform(providers:Array<Type|Provider|any[]>):PlatformRef',
'coreBootstrap(injector:Injector, componentFactory:ComponentFactory):ComponentRef',
'coreLoadAndBootstrap(injector:Injector, componentType:Type):Promise<ComponentRef>',
'assertPlatform(requiredToken:any):PlatformRef',
'createPlatform(injector:Injector):PlatformRef',
'disposePlatform():void',
'getPlatform():PlatformRef',
'provide(token:any, {useClass,useValue,useExisting,useFactory,deps,multi}:{useClass?:Type, useValue?:any, useExisting?:any, useFactory?:Function, deps?:Object[], multi?:boolean}):Provider',
'resolveForwardRef(type:any):any',
'setTestabilityGetter(getter:GetTestability):void',
@ -1210,7 +1216,8 @@ const BROWSER = [
'const ELEMENT_PROBE_PROVIDERS_PROD_MODE:any[]',
'disableDebugTools():void',
'enableDebugTools(ref:ComponentRef):void',
'inspectNativeElement(element:any):DebugNode'
'inspectNativeElement(element:any):DebugNode',
'browserStaticPlatform():PlatformRef'
];
describe('public API', () => {