Skip to content
Permalink
Browse files

fix(ivy): properly insert views in front of empty views (#33647)

PR Close #33647
  • Loading branch information
pkozlowski-opensource authored and kara committed Nov 7, 2019
1 parent 0b99884 commit c5737f4a19b047e1b97db4d7d2e67e078350f2a6
@@ -671,7 +671,12 @@ function getFirstNativeNode(lView: LView, tNode: TNode | null): RNode|null {
const lContainer = lView[tNode.index];
if (lContainer.length > CONTAINER_HEADER_OFFSET) {
const firstView = lContainer[CONTAINER_HEADER_OFFSET];
return getFirstNativeNode(firstView, firstView[TVIEW].firstChild);
const firstTNodeOfView = firstView[TVIEW].firstChild;
if (firstTNodeOfView !== null) {
return getFirstNativeNode(firstView, firstTNodeOfView);
} else {
return lContainer[NATIVE];
}
} else {
return lContainer[NATIVE];
}
@@ -263,15 +263,7 @@ describe('view insertion', () => {
}

describe('before embedded view', () => {
@Component({
selector: 'test-cmpt',
template: `
<ng-template #insert>insert</ng-template>
<ng-template #before>|before</ng-template>
<div><ng-template #vi="vi" viewInserting></ng-template></div>
`
})
@Component({selector: 'test-cmpt', template: ''})
class TestCmpt {
@ViewChild('before', {static: true}) beforeTpl !: TemplateRef<{}>;
@ViewChild('insert', {static: true}) insertTpl !: TemplateRef<{}>;
@@ -348,8 +340,8 @@ describe('view insertion', () => {
});

it('should insert before a view with an empty container as the first root node', () => {
expect(createAndInsertViews(`<ng-template [ngIf]="true"></ng-template>`).textContent)
.toBe('insert');
expect(createAndInsertViews(`<ng-template [ngIf]="true"></ng-template>|before`).textContent)
.toBe('insert|before');

});

0 comments on commit c5737f4

Please sign in to comment.
You can’t perform that action at this time.