@@ -38,7 +38,7 @@ const ng2ComponentInputs = (ng2CompClass) => {
38
38
// Only Inputs
39
39
. filter ( tuple => tuple . anno instanceof InputMetadata )
40
40
// If they have a bindingPropertyName, i.e. "@Input('foo') _foo", then foo, else _foo
41
- . map ( tuple => ( { resolve : tuple . anno . bindingPropertyName || tuple . key , prop : tuple . key } ) ) ;
41
+ . map ( tuple => ( { token : tuple . anno . bindingPropertyName || tuple . key , prop : tuple . key } ) ) ;
42
42
43
43
/** Get "inputs: ['foo']" inputs */
44
44
let inputs = Reflect [ 'getMetadata' ] ( 'annotations' , ng2CompClass )
@@ -48,7 +48,7 @@ const ng2ComponentInputs = (ng2CompClass) => {
48
48
. map ( x => x . inputs )
49
49
// Flatten
50
50
. reduce ( ( acc , arr ) => acc . concat ( arr ) , [ ] )
51
- . map ( input => ( { resolve : input , prop : input } ) ) ;
51
+ . map ( input => ( { token : input , prop : input } ) ) ;
52
52
53
53
return _props . concat ( inputs ) ;
54
54
} ;
@@ -184,7 +184,7 @@ export class UiView {
184
184
let context = new ResolveContext ( config . path ) ;
185
185
let resolvables = context . getTokens ( ) . map ( token => context . getResolvable ( token ) ) . filter ( r => r . resolved ) ;
186
186
let rawProviders = resolvables . map ( r => ( { provide : r . token , useValue : r . data } ) ) ;
187
- rawProviders . push ( provide ( UiView . PARENT_INJECT , { useValue : { context : config . viewDecl . $context , fqn : uiViewData . fqn } } ) ) ;
187
+ rawProviders . push ( { provide : UiView . PARENT_INJECT , useValue : { context : config . viewDecl . $context , fqn : uiViewData . fqn } } ) ;
188
188
189
189
// Get the component class from the view declaration. TODO: allow promises?
190
190
let componentType = < Type > viewDecl . component ;
@@ -196,13 +196,17 @@ export class UiView {
196
196
197
197
// TODO: wire uiCanExit and uiOnParamsChanged callbacks
198
198
199
- // Supply resolve data to matching @Input ('prop') or inputs: ['prop']
200
- let inputs = ng2ComponentInputs ( componentType ) ;
201
199
let bindings = viewDecl [ 'bindings' ] || { } ;
200
+ var addResolvable = tuple => ( {
201
+ prop : tuple . prop ,
202
+ resolvable : context . getResolvable ( bindings [ tuple . prop ] || tuple . token )
203
+ } ) ;
202
204
203
- inputs . map ( tuple => ( { prop : tuple . prop , resolve : bindings [ tuple . prop ] || tuple . resolve } ) )
204
- . filter ( tuple => resolvables [ tuple . resolve ] !== undefined )
205
- . forEach ( tuple => { ref . instance [ tuple . prop ] = resolvables [ tuple . resolve ] . data } ) ;
205
+ // Supply resolve data to matching @Input ('prop') or inputs: ['prop']
206
+ let inputTuples = ng2ComponentInputs ( componentType ) ;
207
+ inputTuples . map ( addResolvable )
208
+ . filter ( tuple => tuple . resolvable && tuple . resolvable . resolved )
209
+ . forEach ( tuple => { ref . instance [ tuple . prop ] = tuple . resolvable . data } ) ;
206
210
207
211
// Initiate change detection for the newly created component
208
212
ref . changeDetectorRef . detectChanges ( ) ;
0 commit comments