parent
116b64de25
commit
61c73576c8
@ -83,9 +83,11 @@ export class DomRenderer extends Renderer {
|
|||||||
attachFragmentAfterFragment(previousFragmentRef: RenderFragmentRef,
|
attachFragmentAfterFragment(previousFragmentRef: RenderFragmentRef,
|
||||||
fragmentRef: RenderFragmentRef) {
|
fragmentRef: RenderFragmentRef) {
|
||||||
var previousFragmentNodes = resolveInternalDomFragment(previousFragmentRef);
|
var previousFragmentNodes = resolveInternalDomFragment(previousFragmentRef);
|
||||||
|
if (previousFragmentNodes.length > 0) {
|
||||||
var sibling = previousFragmentNodes[previousFragmentNodes.length - 1];
|
var sibling = previousFragmentNodes[previousFragmentNodes.length - 1];
|
||||||
moveNodesAfterSibling(sibling, resolveInternalDomFragment(fragmentRef));
|
moveNodesAfterSibling(sibling, resolveInternalDomFragment(fragmentRef));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
attachFragmentAfterElement(elementRef: RenderElementRef, fragmentRef: RenderFragmentRef) {
|
attachFragmentAfterElement(elementRef: RenderElementRef, fragmentRef: RenderFragmentRef) {
|
||||||
if (isBlank(elementRef.renderBoundElementIndex)) {
|
if (isBlank(elementRef.renderBoundElementIndex)) {
|
||||||
@ -253,7 +255,7 @@ export class DomRenderer extends Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function moveNodesAfterSibling(sibling, nodes) {
|
function moveNodesAfterSibling(sibling, nodes) {
|
||||||
if (isPresent(DOM.parentElement(sibling))) {
|
if (nodes.length > 0 && isPresent(DOM.parentElement(sibling))) {
|
||||||
for (var i = 0; i < nodes.length; i++) {
|
for (var i = 0; i < nodes.length; i++) {
|
||||||
DOM.insertBefore(sibling, nodes[i]);
|
DOM.insertBefore(sibling, nodes[i]);
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,33 @@ export function main() {
|
|||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
it('should add and remove empty fragments',
|
||||||
|
inject([AsyncTestCompleter, DomTestbed], (async, tb: DomTestbed) => {
|
||||||
|
tb.compileAndMerge(someComponent,
|
||||||
|
[
|
||||||
|
new ViewDefinition({
|
||||||
|
componentId: 'someComponent',
|
||||||
|
template: '<template></template><template></template>',
|
||||||
|
directives: []
|
||||||
|
})
|
||||||
|
])
|
||||||
|
.then((protoViewMergeMappings) => {
|
||||||
|
var rootView = tb.createView(protoViewMergeMappings[0]);
|
||||||
|
|
||||||
|
var elr = elRef(rootView.viewRef, 1);
|
||||||
|
expect(rootView.hostElement).toHaveText('');
|
||||||
|
var fragment = rootView.fragments[1];
|
||||||
|
var fragment2 = rootView.fragments[2];
|
||||||
|
tb.renderer.attachFragmentAfterElement(elr, fragment);
|
||||||
|
tb.renderer.attachFragmentAfterFragment(fragment, fragment2);
|
||||||
|
tb.renderer.detachFragment(fragment);
|
||||||
|
tb.renderer.detachFragment(fragment2);
|
||||||
|
expect(rootView.hostElement).toHaveText('');
|
||||||
|
|
||||||
|
async.done();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
it('should handle events', inject([AsyncTestCompleter, DomTestbed], (async, tb: DomTestbed) => {
|
it('should handle events', inject([AsyncTestCompleter, DomTestbed], (async, tb: DomTestbed) => {
|
||||||
tb.compileAndMerge(someComponent,
|
tb.compileAndMerge(someComponent,
|
||||||
[
|
[
|
||||||
|
Loading…
x
Reference in New Issue
Block a user