Skip to content

Commit

Permalink
fix(projection): allow to project to a non text node
Browse files Browse the repository at this point in the history
We already had a test for this, but too low level that it did not catch this null value in `hasNativeShadowRoot`

Fixes #3230
Closes #3241
  • Loading branch information
tbosch committed Jul 23, 2015
1 parent 5ec67ee commit b44b06c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
3 changes: 2 additions & 1 deletion modules/angular2/src/render/dom/view/element_binder.ts
@@ -1,5 +1,6 @@
import {AST} from 'angular2/change_detection';
import {List, ListWrapper} from 'angular2/src/facade/collection';
import {isPresent} from 'angular2/src/facade/lang';

export class DomElementBinder {
textNodeIndices: List<number>;
Expand All @@ -23,7 +24,7 @@ export class DomElementBinder {
this.eventLocals = eventLocals;
this.localEvents = localEvents;
this.globalEvents = globalEvents;
this.hasNativeShadowRoot = hasNativeShadowRoot;
this.hasNativeShadowRoot = isPresent(hasNativeShadowRoot) ? hasNativeShadowRoot : false;
}
}

Expand Down
2 changes: 1 addition & 1 deletion modules/angular2/src/render/dom/view/proto_view_merger.ts
Expand Up @@ -339,7 +339,7 @@ function updateElementBinderTextNodeIndices(elementBinder: DomElementBinder,
eventLocals: null,
localEvents: [],
globalEvents: [],
hasNativeShadowRoot: null
hasNativeShadowRoot: false
});
} else {
result = new DomElementBinder({
Expand Down
19 changes: 19 additions & 0 deletions modules/angular2/test/core/compiler/projection_integration_spec.ts
Expand Up @@ -73,6 +73,25 @@ export function main() {
});
}));

it('should support projecting text interpolation to a non bound element',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
tcb.overrideView(
Simple,
new viewAnn.View(
{template: 'SIMPLE(<div><ng-content></ng-content></div>)', directives: []}))
.overrideView(
MainComp,
new viewAnn.View({template: '<simple>{{text}}</simple>', directives: [Simple]}))
.createAsync(MainComp)
.then((main) => {

main.componentInstance.text = 'A';
main.detectChanges();
expect(main.nativeElement).toHaveText('SIMPLE(A)');
async.done();
});
}));

it('should not show the light dom even if there is no content tag',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
tcb.overrideView(MainComp,
Expand Down

0 comments on commit b44b06c

Please sign in to comment.