@@ -209,7 +209,13 @@ class OptionallyInjectsProtoViewRef {
209209}
210210
211211@Injectable ( )
212- class NeedsChangeDetectorRef {
212+ class DirectiveNeedsChangeDetectorRef {
213+ changeDetectorRef ;
214+ constructor ( cdr : ChangeDetectorRef ) { this . changeDetectorRef = cdr ; }
215+ }
216+
217+ @Injectable ( )
218+ class ComponentNeedsChangeDetectorRef {
213219 changeDetectorRef ;
214220 constructor ( cdr : ChangeDetectorRef ) { this . changeDetectorRef = cdr ; }
215221}
@@ -944,16 +950,28 @@ export function main() {
944950 expect ( inj . get ( NeedsElementRef ) . elementRef ) . toBe ( defaultPreBuiltObjects . view . elementRefs [ 0 ] ) ;
945951 } ) ;
946952
947- it ( ' should inject ChangeDetectorRef' , ( ) => {
953+ it ( " should inject ChangeDetectorRef of the component's view into the component" , ( ) => {
948954 var cd = new DynamicChangeDetector ( null , null , null , [ ] , [ ] ) ;
949955 var view = < any > new DummyView ( ) ;
950956 var childView = new DummyView ( ) ;
951957 childView . changeDetector = cd ;
952958 view . componentChildViews = [ childView ] ;
953- var inj = injector ( ListWrapper . concat ( [ NeedsChangeDetectorRef ] , extraBindings ) , null , false ,
959+ var binding = DirectiveBinding . createFromType ( ComponentNeedsChangeDetectorRef , new dirAnn . Component ( ) ) ;
960+ var inj = injector ( ListWrapper . concat ( [ binding ] , extraBindings ) , null , true ,
961+ new PreBuiltObjects ( null , view , null ) ) ;
962+
963+ expect ( inj . get ( ComponentNeedsChangeDetectorRef ) . changeDetectorRef ) . toBe ( cd . ref ) ;
964+ } ) ;
965+
966+ it ( "should inject ChangeDetectorRef of the containing component into directives" , ( ) => {
967+ var cd = new DynamicChangeDetector ( null , null , null , [ ] , [ ] ) ;
968+ var view = < any > new DummyView ( ) ;
969+ view . changeDetector = cd ;
970+ var binding = DirectiveBinding . createFromType ( DirectiveNeedsChangeDetectorRef , new dirAnn . Directive ( ) ) ;
971+ var inj = injector ( ListWrapper . concat ( [ binding ] , extraBindings ) , null , false ,
954972 new PreBuiltObjects ( null , view , null ) ) ;
955973
956- expect ( inj . get ( NeedsChangeDetectorRef ) . changeDetectorRef ) . toBe ( cd . ref ) ;
974+ expect ( inj . get ( DirectiveNeedsChangeDetectorRef ) . changeDetectorRef ) . toBe ( cd . ref ) ;
957975 } ) ;
958976
959977 it ( 'should inject ViewContainerRef' , ( ) => {
0 commit comments