Skip to content

Commit 7d89cff

Browse files
mheveryalxhub
authored andcommitted
fix(ivy): Ensure ComponentFactory uses both injectors to retrieve rendererFactory (angular#27341)
PR Close angular#27341
1 parent 6f5c124 commit 7d89cff

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

packages/core/src/render3/component_ref.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,12 @@ export class ComponentFactory<T> extends viewEngine_ComponentFactory<T> {
115115
ngModule?: viewEngine_NgModuleRef<any>|undefined): viewEngine_ComponentRef<T> {
116116
const isInternalRootView = rootSelectorOrNode === undefined;
117117

118-
let rendererFactory: RendererFactory3;
119-
let sanitizer: Sanitizer|null = null;
120-
121-
if (ngModule) {
122-
rendererFactory = ngModule.injector.get(RendererFactory2) as RendererFactory3;
123-
sanitizer = ngModule.injector.get(Sanitizer, null);
124-
} else {
125-
rendererFactory = domRendererFactory3;
126-
}
118+
const rootViewInjector =
119+
ngModule ? createChainedInjector(injector, ngModule.injector) : injector;
120+
121+
const rendererFactory =
122+
rootViewInjector.get(RendererFactory2, domRendererFactory3) as RendererFactory3;
123+
const sanitizer = rootViewInjector.get(Sanitizer, null);
127124

128125
const hostRNode = isInternalRootView ?
129126
elementCreate(this.selector, rendererFactory.createRenderer(null, this.componentDef)) :
@@ -132,11 +129,9 @@ export class ComponentFactory<T> extends viewEngine_ComponentFactory<T> {
132129
const rootFlags = this.componentDef.onPush ? LViewFlags.Dirty | LViewFlags.IsRoot :
133130
LViewFlags.CheckAlways | LViewFlags.IsRoot;
134131
const rootContext: RootContext =
135-
ngModule && !isInternalRootView ? ngModule.injector.get(ROOT_CONTEXT) : createRootContext();
132+
!isInternalRootView ? rootViewInjector.get(ROOT_CONTEXT) : createRootContext();
136133

137134
const renderer = rendererFactory.createRenderer(hostRNode, this.componentDef);
138-
const rootViewInjector =
139-
ngModule ? createChainedInjector(injector, ngModule.injector) : injector;
140135

141136
if (rootSelectorOrNode && hostRNode) {
142137
ngDevMode && ngDevMode.rendererSetAttribute++;

0 commit comments

Comments
 (0)