@@ -11,7 +11,7 @@ import {attachPatchData} from './context_discovery';
11
11
import { callHooks } from './hooks' ;
12
12
import { LContainer , NATIVE , VIEWS , unusedValueExportToPlacateAjd as unused1 } from './interfaces/container' ;
13
13
import { ComponentDef } from './interfaces/definition' ;
14
- import { TContainerNode , TElementContainerNode , TElementNode , TNode , TNodeFlags , TNodeType , TProjectionNode , TViewNode , unusedValueExportToPlacateAjd as unused2 } from './interfaces/node' ;
14
+ import { TContainerNode , TElementContainerNode , TElementNode , TNode , TNodeFlags , TNodeType , TViewNode , unusedValueExportToPlacateAjd as unused2 } from './interfaces/node' ;
15
15
import { unusedValueExportToPlacateAjd as unused3 } from './interfaces/projection' ;
16
16
import { ProceduralRenderer3 , RComment , RElement , RNode , RText , Renderer3 , isProceduralRenderer , unusedValueExportToPlacateAjd as unused4 } from './interfaces/renderer' ;
17
17
import { CLEANUP , CONTAINER_INDEX , FLAGS , HEADER_OFFSET , HOST_NODE , HookData , LView , LViewFlags , NEXT , PARENT , QUERIES , RENDERER , TVIEW , unusedValueExportToPlacateAjd as unused5 } from './interfaces/view' ;
@@ -181,7 +181,7 @@ function executeNodeAction(
181
181
if ( action === WalkTNodeTreeAction . Insert ) {
182
182
nativeInsertBefore ( renderer , parent ! , node , beforeNode || null ) ;
183
183
} else if ( action === WalkTNodeTreeAction . Detach ) {
184
- nativeRemoveChild ( renderer , node , isComponent ( tNode ) ) ;
184
+ nativeRemoveNode ( renderer , node , isComponent ( tNode ) ) ;
185
185
} else if ( action === WalkTNodeTreeAction . Destroy ) {
186
186
ngDevMode && ngDevMode . rendererDestroyNode ++ ;
187
187
( renderer as ProceduralRenderer3 ) . destroyNode ! ( node ) ;
@@ -593,18 +593,13 @@ function nativeAppendOrInsertBefore(
593
593
}
594
594
}
595
595
596
- /** Removes a node from the DOM. */
597
- export function nativeRemoveChild (
598
- renderer : Renderer3 , child : RNode , isHostElement ?: boolean ) : void {
596
+ /** Removes a node from the DOM given its native parent . */
597
+ function nativeRemoveChild (
598
+ renderer : Renderer3 , parent : RElement , child : RNode , isHostElement ?: boolean ) : void {
599
599
if ( isProceduralRenderer ( renderer ) ) {
600
- const renderParent = renderer . parentNode ( child ) ;
601
- if ( renderParent ) {
602
- renderer . removeChild ( renderParent , child , isHostElement ) ;
603
- }
600
+ renderer . removeChild ( parent , child , isHostElement ) ;
604
601
} else {
605
- // We intentionally don't use the given parent node since it may no longer
606
- // match the state of the DOM (if the child node has been manually moved).
607
- child . parentNode && child . parentNode . removeChild ( child ) ;
602
+ parent . removeChild ( child ) ;
608
603
}
609
604
}
610
605
@@ -693,14 +688,19 @@ export function getBeforeNodeForView(index: number, views: LView[], containerNat
693
688
}
694
689
695
690
/**
696
- * Removes the `child` element from the DOM if not in view and not projected.
691
+ * Removes a native node itself using a given renderer. To remove the node we are looking up its
692
+ * parent from the native tree as not all platforms / browsers support the equivalent of
693
+ * node.remove().
697
694
*
698
- * @param childTNode The TNode of the child to remove
699
- * @param childEl The child that should be removed
700
- * @param currentView The current LView
695
+ * @param renderer A renderer to be used
696
+ * @param rNode The native node that should be removed
697
+ * @param isHostElement A flag indicating if a node to be removed is a host of a component.
701
698
*/
702
- export function removeNode ( childTNode : TNode , childEl : RNode , currentView : LView ) : void {
703
- nativeRemoveChild ( currentView [ RENDERER ] , childEl ) ;
699
+ export function nativeRemoveNode ( renderer : Renderer3 , rNode : RNode , isHostElement ?: boolean ) : void {
700
+ const nativeParent = nativeParentNode ( renderer , rNode ) ;
701
+ if ( nativeParent ) {
702
+ nativeRemoveChild ( renderer , nativeParent , rNode , isHostElement ) ;
703
+ }
704
704
}
705
705
706
706
/**
0 commit comments