@@ -451,30 +451,57 @@ export function main() {
451451 } )
452452 } ) ) ;
453453
454- it ( 'should provide binding configuration config to the component' , inject ( [ AsyncTestCompleter ] , ( async ) => {
455- tplResolver . setTemplate ( MyComp , new Template ( {
456- inline : '<push-cmp #cmp></push-cmp>' ,
457- directives : [ [ [ PushBasedComp ] ] ]
454+ describe ( "BindingPropagationConfig" , ( ) => {
455+ it ( "can be used to disable the change detection of the component's template" ,
456+ inject ( [ AsyncTestCompleter ] , ( async ) => {
457+
458+ tplResolver . setTemplate ( MyComp , new Template ( {
459+ inline : '<push-cmp #cmp></push-cmp>' ,
460+ directives : [ [ [ PushBasedComp ] ] ]
461+ } ) ) ;
462+
463+ compiler . compile ( MyComp ) . then ( ( pv ) => {
464+ createView ( pv ) ;
465+
466+ var cmp = view . locals . get ( 'cmp' ) ;
467+
468+ cd . detectChanges ( ) ;
469+ expect ( cmp . numberOfChecks ) . toEqual ( 1 ) ;
470+
471+ cd . detectChanges ( ) ;
472+ expect ( cmp . numberOfChecks ) . toEqual ( 1 ) ;
473+
474+ cmp . propagate ( ) ;
475+
476+ cd . detectChanges ( ) ;
477+ expect ( cmp . numberOfChecks ) . toEqual ( 2 ) ;
478+ async . done ( ) ;
479+ } )
458480 } ) ) ;
459481
460- compiler . compile ( MyComp ) . then ( ( pv ) => {
461- createView ( pv ) ;
482+ it ( 'should not affect updating properties on the component' , inject ( [ AsyncTestCompleter ] , ( async ) => {
483+ tplResolver . setTemplate ( MyComp , new Template ( {
484+ inline : '<push-cmp [prop]="ctxProp" #cmp></push-cmp>' ,
485+ directives : [ [ [ PushBasedComp ] ] ]
486+ } ) ) ;
462487
463- var cmp = view . locals . get ( 'cmp' ) ;
488+ compiler . compile ( MyComp ) . then ( ( pv ) => {
489+ createView ( pv ) ;
464490
465- cd . detectChanges ( ) ;
466- expect ( cmp . numberOfChecks ) . toEqual ( 1 ) ;
491+ var cmp = view . locals . get ( 'cmp' ) ;
467492
468- cd . detectChanges ( ) ;
469- expect ( cmp . numberOfChecks ) . toEqual ( 1 ) ;
493+ ctx . ctxProp = "one" ;
494+ cd . detectChanges ( ) ;
495+ expect ( cmp . prop ) . toEqual ( "one" ) ;
470496
471- cmp . propagate ( ) ;
497+ ctx . ctxProp = "two" ;
498+ cd . detectChanges ( ) ;
499+ expect ( cmp . prop ) . toEqual ( "two" ) ;
472500
473- cd . detectChanges ( ) ;
474- expect ( cmp . numberOfChecks ) . toEqual ( 2 ) ;
475- async . done ( ) ;
476- } )
477- } ) ) ;
501+ async . done ( ) ;
502+ } )
503+ } ) ) ;
504+ } ) ;
478505
479506 it ( 'should create a component that injects a @Parent' , inject ( [ AsyncTestCompleter ] , ( async ) => {
480507 tplResolver . setTemplate ( MyComp , new Template ( {
@@ -673,11 +700,17 @@ class MyDir {
673700 }
674701}
675702
676- @Component ( { selector : 'push-cmp' } )
703+ @Component ( {
704+ selector : 'push-cmp' ,
705+ bind : {
706+ 'prop' : 'prop'
707+ }
708+ } )
677709@Template ( { inline : '{{field}}' } )
678710class PushBasedComp {
679711 numberOfChecks :number ;
680712 bpc :BindingPropagationConfig ;
713+ prop ;
681714
682715 constructor ( bpc :BindingPropagationConfig ) {
683716 this . numberOfChecks = 0 ;
0 commit comments