Skip to content

Commit 351f24e

Browse files
committed
fix(core): return the ChangeDetectorRef of the component also for embedded views.
1 parent aecb60a commit 351f24e

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

modules/angular2/src/compiler/view_compiler/compile_element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ export class CompileElement extends CompileNode {
306306
if (requestingProviderType === ProviderAstType.Component) {
307307
return this._compViewExpr.prop('ref');
308308
} else {
309-
return o.THIS_EXPR.prop('ref');
309+
return getPropertyInView(o.THIS_EXPR.prop('ref'), this.view, this.view.componentView);
310310
}
311311
}
312312
}

modules/angular2/src/compiler/view_compiler/compile_pipe.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class CompilePipe {
2525
create(): void {
2626
var deps = this.meta.type.diDeps.map((diDep) => {
2727
if (diDep.token.equalsTo(identifierToken(Identifiers.ChangeDetectorRef))) {
28-
return o.THIS_EXPR.prop('ref');
28+
return getPropertyInView(o.THIS_EXPR.prop('ref'), this.view, this.view.componentView);
2929
}
3030
return injectFromViewParentInjector(diDep.token, false);
3131
});

modules/angular2/test/core/linker/view_injector_integration_spec.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -591,17 +591,21 @@ export function main() {
591591
fakeAsync(() => {
592592
var cf = createCompFixture(
593593
'<div componentNeedsChangeDetectorRef></div>',
594-
tcb.overrideTemplate(PushComponentNeedsChangeDetectorRef,
595-
'{{counter}}<div directiveNeedsChangeDetectorRef></div>'));
594+
tcb.overrideTemplate(
595+
PushComponentNeedsChangeDetectorRef,
596+
'{{counter}}<div directiveNeedsChangeDetectorRef></div><div *ngIf="true" directiveNeedsChangeDetectorRef></div>'));
596597
cf.detectChanges();
597598
var compEl = cf.debugElement.children[0];
598-
var comp = compEl.inject(PushComponentNeedsChangeDetectorRef);
599+
var comp: PushComponentNeedsChangeDetectorRef =
600+
compEl.inject(PushComponentNeedsChangeDetectorRef);
599601
comp.counter = 1;
600602
cf.detectChanges();
601603
expect(compEl.nativeElement).toHaveText('0');
602-
compEl.children[0]
603-
.inject(DirectiveNeedsChangeDetectorRef)
604-
.changeDetectorRef.markForCheck();
604+
expect(compEl.children[0].inject(DirectiveNeedsChangeDetectorRef).changeDetectorRef)
605+
.toBe(comp.changeDetectorRef);
606+
expect(compEl.children[1].inject(DirectiveNeedsChangeDetectorRef).changeDetectorRef)
607+
.toBe(comp.changeDetectorRef);
608+
comp.changeDetectorRef.markForCheck();
605609
cf.detectChanges();
606610
expect(compEl.nativeElement).toHaveText('1');
607611
}));

0 commit comments

Comments
 (0)