feat(renderer): use a comment instead of an element when stamping out template>` elements

Originally authored by @tbosch, this reverts the revert commit
e274ff8a69.

Closes #4805
This commit is contained in:
Jeff Cross 2015-11-20 13:46:37 -08:00 committed by Victor Savkin
parent 79399e1c51
commit 194dc7da78
3 changed files with 15 additions and 2 deletions

View File

@ -19,7 +19,7 @@ var _allViewsById = new Map<number, AppView>();
var _nextId = 0; var _nextId = 0;
function _setElementId(element, indices: number[]) { function _setElementId(element, indices: number[]) {
if (isPresent(element)) { if (isPresent(element) && DOM.isElementNode(element)) {
DOM.setData(element, NG_ID_PROPERTY, indices.join(NG_ID_SEPARATOR)); DOM.setData(element, NG_ID_PROPERTY, indices.join(NG_ID_SEPARATOR));
} }
} }

View File

@ -476,6 +476,19 @@ export function main() {
}); });
})); }));
it('should use a comment while stamping out `<template>` elements.',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
tcb.overrideView(MyComp, new ViewMetadata({template: '<template></template>'}))
.createAsync(MyComp)
.then((fixture) => {
var childNodesOfWrapper = DOM.childNodes(fixture.debugElement.nativeElement);
expect(childNodesOfWrapper.length).toBe(1);
expect(DOM.isCommentNode(childNodesOfWrapper[0])).toBe(true);
async.done();
});
}));
it('should support template directives via `template` attribute.', it('should support template directives via `template` attribute.',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => { inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
tcb.overrideView( tcb.overrideView(

View File

@ -9,7 +9,7 @@ describe('ng2 naive infinite scroll benchmark', function() {
it('should not throw errors', function() { it('should not throw errors', function() {
browser.get(URL); browser.get(URL);
var expectedRowCount = 18; var expectedRowCount = 18;
var expectedCellsPerRow = 28; var expectedCellsPerRow = 27;
var allScrollItems = 'scroll-app #testArea scroll-item'; var allScrollItems = 'scroll-app #testArea scroll-item';
var cells = `${ allScrollItems } .row *`; var cells = `${ allScrollItems } .row *`;
var stageButtons = `${ allScrollItems } .row stage-buttons button`; var stageButtons = `${ allScrollItems } .row stage-buttons button`;