fix(ivy): properly insert views in front of empty views (#33647)
PR Close #33647
This commit is contained in:
parent
056236cafd
commit
05d7c575e4
|
@ -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');
|
||||
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue