@@ -12,12 +12,15 @@ import {createForeignView} from '../foreign_view';
1212import { TContainerNode , TNodeType } from '../interfaces/node' ;
1313import { HEADER_OFFSET , RENDERER } from '../interfaces/view' ;
1414import { appendChild } from '../node_manipulation' ;
15+ import { nativeInsertBefore } from '../dom_node_manipulation' ;
1516import { getLView , getTView , setCurrentTNode , setCurrentTNodeAsNotParent } from '../state' ;
1617import { getOrCreateTNode } from '../tnode_manipulation' ;
1718import { addToEndOfViewTree } from '../view/construction' ;
1819import { createLContainer } from '../view/container' ;
1920import { NodeInjector } from '../di' ;
2021import { runInInjectionContext } from '../../di' ;
22+ import { Renderer } from '../interfaces/renderer' ;
23+ import { RNode } from '../interfaces/renderer_dom' ;
2124
2225/**
2326 * Creation phase instruction to render a foreign component.
@@ -48,7 +51,7 @@ export function ɵɵforeignComponent(
4851 }
4952
5053 // 2. Create the anchor node in the DOM
51- const renderer = lView [ RENDERER ] ;
54+ const renderer = lView [ RENDERER ] as Renderer ;
5255 const comment = renderer . createComment ( ngDevMode ? 'foreign-component' : '' ) ;
5356 appendChild ( tView , lView , comment , tNode ) ;
5457 attachPatchData ( comment , lView ) ;
@@ -66,11 +69,11 @@ export function ɵɵforeignComponent(
6669 const [ nodes , dispose ] = runInInjectionContext ( injector , ( ) => foreignComponent [ RENDER ] ( props ) ) ;
6770
6871 // 6. Insert the returned nodes into the foreign view, between its head and tail comment anchors.
69- const tail = viewRef . tail ;
70- const parentNode = tail . parentNode ;
71- if ( parentNode ) {
72+ const tail = viewRef . tail as RNode ;
73+ const parent = tail . parentElement ;
74+ if ( parent ) {
7275 for ( let i = 0 ; i < nodes . length ; i ++ ) {
73- parentNode . insertBefore ( nodes [ i ] , tail ) ;
76+ nativeInsertBefore ( renderer , parent , nodes [ i ] , tail , false ) ;
7477 }
7578 }
7679
0 commit comments