fix(ivy): Renderer2 should not use a special injection fn (#26369)
PR Close #26369
This commit is contained in:

committed by
Miško Hevery

parent
062fe5c2cf
commit
6a64ac4151
@ -22,7 +22,6 @@ import {_getViewData, assertPreviousIsParent, getPreviousOrParentTNode, resolveD
|
||||
import {DirectiveDef} from './interfaces/definition';
|
||||
import {InjectorLocationFlags, PARENT_INJECTOR, TNODE,} from './interfaces/injector';
|
||||
import {AttributeMarker, TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeFlags, TNodeType} from './interfaces/node';
|
||||
import {isProceduralRenderer} from './interfaces/renderer';
|
||||
import {DECLARATION_VIEW, HOST_NODE, INJECTOR, LViewData, PARENT, RENDERER, TData, TVIEW, TView} from './interfaces/view';
|
||||
import {assertNodeOfPossibleTypes} from './node_assert';
|
||||
|
||||
@ -246,9 +245,6 @@ export function directiveInject<T>(
|
||||
return getOrCreateInjectable<T>(hostTNode, _getViewData(), token, flags);
|
||||
}
|
||||
|
||||
export function injectRenderer2(): Renderer2 {
|
||||
return getOrCreateRenderer2(_getViewData());
|
||||
}
|
||||
/**
|
||||
* Inject static attribute value into directive constructor.
|
||||
*
|
||||
@ -298,14 +294,6 @@ export function injectAttribute(attrNameToInject: string): string|undefined {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function getOrCreateRenderer2(view: LViewData): Renderer2 {
|
||||
const renderer = view[RENDERER];
|
||||
if (isProceduralRenderer(renderer)) {
|
||||
return renderer as Renderer2;
|
||||
} else {
|
||||
throw new Error('Cannot inject Renderer2 when the application uses Renderer3!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value associated to the given token from the injectors.
|
||||
@ -509,10 +497,6 @@ export class NodeInjector implements Injector {
|
||||
}
|
||||
|
||||
get(token: any): any {
|
||||
if (token === Renderer2) {
|
||||
return getOrCreateRenderer2(this._hostView);
|
||||
}
|
||||
|
||||
setEnvironment(this._tNode, this._hostView);
|
||||
return getOrCreateInjectable(this._tNode, this._hostView, token);
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import {PublicFeature} from './features/public_feature';
|
||||
import {BaseDef, ComponentDef, ComponentDefWithMeta, ComponentTemplate, ComponentType, DirectiveDef, DirectiveDefFlags, DirectiveDefWithMeta, DirectiveType, PipeDef, PipeDefWithMeta} from './interfaces/definition';
|
||||
|
||||
export {ComponentFactory, ComponentFactoryResolver, ComponentRef, WRAP_RENDERER_FACTORY2, injectComponentFactoryResolver} from './component_ref';
|
||||
export {directiveInject, getFactoryOf, getInheritedFactory, injectAttribute, injectRenderer2} from './di';
|
||||
export {directiveInject, getFactoryOf, getInheritedFactory, injectAttribute} from './di';
|
||||
export {RenderFlags} from './interfaces/definition';
|
||||
export {CssSelectorList} from './interfaces/projection';
|
||||
|
||||
|
@ -31,7 +31,6 @@ export const angularCoreEnv: {[name: string]: Function} = {
|
||||
'inject': inject,
|
||||
'ɵinjectAttribute': r3.injectAttribute,
|
||||
'ɵtemplateRefExtractor': r3.templateRefExtractor,
|
||||
'ɵinjectRenderer2': r3.injectRenderer2,
|
||||
'ɵNgOnChangesFeature': r3.NgOnChangesFeature,
|
||||
'ɵPublicFeature': r3.PublicFeature,
|
||||
'ɵInheritDefinitionFeature': r3.InheritDefinitionFeature,
|
||||
|
@ -14,6 +14,7 @@ import {NgModuleRef as viewEngine_NgModuleRef} from '../linker/ng_module_factory
|
||||
import {TemplateRef as ViewEngine_TemplateRef} from '../linker/template_ref';
|
||||
import {ViewContainerRef as ViewEngine_ViewContainerRef} from '../linker/view_container_ref';
|
||||
import {EmbeddedViewRef as viewEngine_EmbeddedViewRef, ViewRef as viewEngine_ViewRef} from '../linker/view_ref';
|
||||
import {Renderer2} from '../render/api';
|
||||
|
||||
import {assertDefined, assertGreaterThan, assertLessThan} from './assert';
|
||||
import {NodeInjector, getParentInjectorLocation, getParentInjectorView} from './di';
|
||||
@ -23,7 +24,7 @@ import {RenderFlags} from './interfaces/definition';
|
||||
import {InjectorLocationFlags} from './interfaces/injector';
|
||||
import {LContainerNode, TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeFlags, TNodeType, TViewNode} from './interfaces/node';
|
||||
import {LQueries} from './interfaces/query';
|
||||
import {RComment, RElement, Renderer3} from './interfaces/renderer';
|
||||
import {RComment, RElement, Renderer3, isProceduralRenderer} from './interfaces/renderer';
|
||||
import {CONTEXT, HOST_NODE, LViewData, QUERIES, RENDERER, TVIEW, TView} from './interfaces/view';
|
||||
import {assertNodeOfPossibleTypes, assertNodeType} from './node_assert';
|
||||
import {addRemoveViewFromContainer, appendChild, detachView, findComponentView, getBeforeNodeForView, getRenderParent, insertView, removeView} from './node_manipulation';
|
||||
@ -340,3 +341,17 @@ export function createViewRef(
|
||||
}
|
||||
return null !;
|
||||
}
|
||||
|
||||
function getOrCreateRenderer2(view: LViewData): Renderer2 {
|
||||
const renderer = view[RENDERER];
|
||||
if (isProceduralRenderer(renderer)) {
|
||||
return renderer as Renderer2;
|
||||
} else {
|
||||
throw new Error('Cannot inject Renderer2 when the application uses Renderer3!');
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns a Renderer2 (or throws when application was bootstrapped with Renderer3) */
|
||||
export function injectRenderer2(): Renderer2 {
|
||||
return getOrCreateRenderer2(_getViewData());
|
||||
}
|
Reference in New Issue
Block a user