diff --git a/packages/core/src/application_ref.ts b/packages/core/src/application_ref.ts index 94fe4d44d5b..f9beaee0062 100644 --- a/packages/core/src/application_ref.ts +++ b/packages/core/src/application_ref.ts @@ -34,7 +34,7 @@ import {COMPILER_OPTIONS, CompilerOptions} from './linker/compiler'; import {ComponentFactory, ComponentRef} from './linker/component_factory'; import {ComponentFactoryResolver} from './linker/component_factory_resolver'; import {InternalNgModuleRef, NgModuleFactory, NgModuleRef} from './linker/ng_module_factory'; -import {ViewRef} from './linker/view_ref'; +import {InternalViewRef, ViewRef} from './linker/view_ref'; import {isComponentResourceResolutionQueueEmpty, resolveComponentResources} from './metadata/resource_loading'; import {assertNgModuleType} from './render3/assert'; import {ComponentFactory as R3ComponentFactory} from './render3/component_ref'; @@ -44,7 +44,6 @@ import {setLocaleId} from './render3/i18n/i18n_locale_id'; import {setJitOptions} from './render3/jit/jit_options'; import {createNgModuleRefWithProviders, EnvironmentNgModuleRefAdapter, NgModuleFactory as R3NgModuleFactory} from './render3/ng_module_ref'; import {publishDefaultGlobalUtils as _publishDefaultGlobalUtils} from './render3/util/global_utils'; -import {InternalViewRef} from './render3/view_ref'; import {TESTABILITY} from './testability/testability'; import {isPromise} from './util/lang'; import {stringify} from './util/stringify'; @@ -826,7 +825,7 @@ export class ApplicationRef { private _destroyed = false; private _destroyListeners: Array<() => void> = []; /** @internal */ - _views: InternalViewRef[] = []; + _views: InternalViewRef[] = []; private readonly internalErrorHandler = inject(INTERNAL_APPLICATION_ERROR_HANDLER); private readonly zoneIsStable = inject(ZONE_IS_STABLE_OBSERVABLE); @@ -1078,7 +1077,7 @@ export class ApplicationRef { */ attachView(viewRef: ViewRef): void { (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed(); - const view = (viewRef as InternalViewRef); + const view = (viewRef as InternalViewRef); this._views.push(view); view.attachToAppRef(this); } @@ -1088,7 +1087,7 @@ export class ApplicationRef { */ detachView(viewRef: ViewRef): void { (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed(); - const view = (viewRef as InternalViewRef); + const view = (viewRef as InternalViewRef); remove(this._views, view); view.detachFromAppRef(); } diff --git a/packages/core/src/change_detection/change_detector_ref.ts b/packages/core/src/change_detection/change_detector_ref.ts index 4dc711d5ba5..0f0fac68eae 100644 --- a/packages/core/src/change_detection/change_detector_ref.ts +++ b/packages/core/src/change_detection/change_detector_ref.ts @@ -13,7 +13,7 @@ import {isComponentHost} from '../render3/interfaces/type_checks'; import {DECLARATION_COMPONENT_VIEW, LView} from '../render3/interfaces/view'; import {getCurrentTNode, getLView} from '../render3/state'; import {getComponentLViewByIndex} from '../render3/util/view_utils'; -import {InternalViewRef} from '../render3/view_ref'; +import {ViewRef} from '../render3/view_ref'; /** * Base class that provides change detection functionality. @@ -149,12 +149,12 @@ function createViewRef(tNode: TNode, lView: LView, isPipe: boolean): ChangeDetec // The LView represents the location where the component is declared. // Instead we want the LView for the component View and so we need to look it up. const componentView = getComponentLViewByIndex(tNode.index, lView); // look down - return new InternalViewRef(componentView, componentView); + return new ViewRef(componentView, componentView); } else if (tNode.type & (TNodeType.AnyRNode | TNodeType.AnyContainer | TNodeType.Icu)) { // The LView represents the location where the injection is requested from. // We need to locate the containing LView (in case where the `lView` is an embedded view) const hostComponentView = lView[DECLARATION_COMPONENT_VIEW]; // look up - return new InternalViewRef(hostComponentView, lView); + return new ViewRef(hostComponentView, lView); } return null!; } diff --git a/packages/core/src/core_private_export.ts b/packages/core/src/core_private_export.ts index 5f3c4e8e295..75df01dda7e 100644 --- a/packages/core/src/core_private_export.ts +++ b/packages/core/src/core_private_export.ts @@ -33,7 +33,6 @@ export {clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponent export {ReflectionCapabilities as ɵReflectionCapabilities} from './reflection/reflection_capabilities'; export {AnimationRendererType as ɵAnimationRendererType} from './render/api'; export {InjectorProfilerContext as ɵInjectorProfilerContext, setInjectorProfilerContext as ɵsetInjectorProfilerContext} from './render3/debug/injector_profiler'; -export {InternalViewRef as ɵInternalViewRef} from './render3/view_ref'; export {allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, BypassType as ɵBypassType, getSanitizationBypassType as ɵgetSanitizationBypassType, SafeHtml as ɵSafeHtml, SafeResourceUrl as ɵSafeResourceUrl, SafeScript as ɵSafeScript, SafeStyle as ɵSafeStyle, SafeUrl as ɵSafeUrl, SafeValue as ɵSafeValue, unwrapSafeValue as ɵunwrapSafeValue} from './sanitization/bypass'; export {_sanitizeHtml as ɵ_sanitizeHtml} from './sanitization/html_sanitizer'; export {_sanitizeUrl as ɵ_sanitizeUrl} from './sanitization/url_sanitizer'; diff --git a/packages/core/src/core_render3_private_export.ts b/packages/core/src/core_render3_private_export.ts index b40d633b279..a3a2b1ffb15 100644 --- a/packages/core/src/core_render3_private_export.ts +++ b/packages/core/src/core_render3_private_export.ts @@ -289,7 +289,7 @@ export { publishDefaultGlobalUtils as ɵpublishDefaultGlobalUtils , publishGlobalUtil as ɵpublishGlobalUtil} from './render3/util/global_utils'; -export {InternalViewRef as ɵViewRef} from './render3/view_ref'; +export {ViewRef as ɵViewRef} from './render3/view_ref'; export { bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, diff --git a/packages/core/src/hydration/utils.ts b/packages/core/src/hydration/utils.ts index 92e9d6cd403..9d288ca2cce 100644 --- a/packages/core/src/hydration/utils.ts +++ b/packages/core/src/hydration/utils.ts @@ -180,8 +180,7 @@ export function retrieveHydrationInfo( */ export function getLNodeForHydration(viewRef: ViewRef): LView|LContainer|null { // Reading an internal field from `ViewRef` instance. - // TODO(atscott): This should be `as InternalViewRef` but creates a circular dependency - let lView = (viewRef as any)._lView; + let lView = (viewRef as any)._lView as LView; const tView = lView[TVIEW]; // A registered ViewRef might represent an instance of an // embedded view, in which case we do not need to annotate it. diff --git a/packages/core/src/linker/template_ref.ts b/packages/core/src/linker/template_ref.ts index 3c57230ee1a..b64f542d1b7 100644 --- a/packages/core/src/linker/template_ref.ts +++ b/packages/core/src/linker/template_ref.ts @@ -12,7 +12,7 @@ import {TContainerNode, TNode, TNodeType} from '../render3/interfaces/node'; import {LView} from '../render3/interfaces/view'; import {getCurrentTNode, getLView} from '../render3/state'; import {createAndRenderEmbeddedLView} from '../render3/view_manipulation'; -import {InternalViewRef as R3_ViewRef} from '../render3/view_ref'; +import {ViewRef as R3_ViewRef} from '../render3/view_ref'; import {assertDefined} from '../util/assert'; import {createElementRef, ElementRef} from './element_ref'; diff --git a/packages/core/src/linker/view_container_ref.ts b/packages/core/src/linker/view_container_ref.ts index 9e9633a8f05..158a4852769 100644 --- a/packages/core/src/linker/view_container_ref.ts +++ b/packages/core/src/linker/view_container_ref.ts @@ -31,7 +31,7 @@ import {getCurrentTNode, getLView} from '../render3/state'; import {getParentInjectorIndex, getParentInjectorView, hasParentInjector} from '../render3/util/injector_utils'; import {getNativeByTNode, unwrapRNode, viewAttachedToContainer} from '../render3/util/view_utils'; import {addLViewToLContainer, shouldAddViewToDom} from '../render3/view_manipulation'; -import {InternalViewRef} from '../render3/view_ref'; +import {ViewRef as R3ViewRef} from '../render3/view_ref'; import {addToArray, removeFromArray} from '../util/array_utils'; import {assertDefined, assertEqual, assertGreaterThan, assertLessThan, throwError} from '../util/assert'; @@ -474,7 +474,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef { } private insertImpl(viewRef: ViewRef, index?: number, addToDOM?: boolean): ViewRef { - const lView = (viewRef as InternalViewRef)._lView; + const lView = (viewRef as R3ViewRef)._lView!; if (ngDevMode && viewRef.destroyed) { throw new Error('Cannot insert a destroyed View in a ViewContainer!'); @@ -514,7 +514,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef { addLViewToLContainer(lContainer, lView, adjustedIdx, addToDOM); - (viewRef as InternalViewRef).attachToViewContainerRef(); + (viewRef as R3ViewRef).attachToViewContainerRef(); addToArray(getOrCreateViewRefs(lContainer), adjustedIdx, viewRef); return viewRef; @@ -554,7 +554,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef { const wasDetached = view && removeFromArray(getOrCreateViewRefs(this._lContainer), adjustedIdx) != null; - return wasDetached ? new InternalViewRef(view!) : null; + return wasDetached ? new R3ViewRef(view!) : null; } private _adjustIndex(index?: number, shift: number = 0) { diff --git a/packages/core/src/linker/view_ref.ts b/packages/core/src/linker/view_ref.ts index f5a68c659a9..d8a44012cc9 100644 --- a/packages/core/src/linker/view_ref.ts +++ b/packages/core/src/linker/view_ref.ts @@ -7,7 +7,6 @@ */ import {ChangeDetectorRef} from '../change_detection/change_detector_ref'; -import {LView} from '../render3/interfaces/view'; /** * Represents an Angular [view](guide/glossary#view "Definition"). @@ -102,6 +101,11 @@ export abstract class EmbeddedViewRef extends ViewRef { abstract get rootNodes(): any[]; } +export interface InternalViewRef extends ViewRef { + detachFromAppRef(): void; + attachToAppRef(appRef: ViewRefTracker): void; +} + /** * Interface for tracking root `ViewRef`s in `ApplicationRef`. * diff --git a/packages/core/src/render3/component_ref.ts b/packages/core/src/render3/component_ref.ts index 75a473ee87e..c5ee9dc3b2b 100644 --- a/packages/core/src/render3/component_ref.ts +++ b/packages/core/src/render3/component_ref.ts @@ -51,7 +51,7 @@ import {computeStaticStyling} from './styling/static_styling'; import {mergeHostAttrs, setUpAttributes} from './util/attrs_utils'; import {debugStringifyTypeForError, stringifyForError} from './util/stringify_utils'; import {getComponentLViewByIndex, getNativeByTNode, getTNode} from './util/view_utils'; -import {InternalViewRef} from './view_ref'; +import {ViewRef} from './view_ref'; export class ComponentFactoryResolver extends AbstractComponentFactoryResolver { /** @@ -309,7 +309,7 @@ export class ComponentFactory extends AbstractComponentFactory { */ export class ComponentRef extends AbstractComponentRef { override instance: T; - override hostView: InternalViewRef; + override hostView: ViewRef; override changeDetectorRef: ChangeDetectorRef; override componentType: Type; private previousInputValues: Map|null = null; @@ -319,7 +319,7 @@ export class ComponentRef extends AbstractComponentRef { private _tNode: TElementNode|TContainerNode|TElementContainerNode) { super(); this.instance = instance; - this.hostView = this.changeDetectorRef = new InternalViewRef( + this.hostView = this.changeDetectorRef = new ViewRef( _rootLView, undefined, /* _cdRefInjectingView */ false, /* notifyErrorHandler */ diff --git a/packages/core/src/render3/di.ts b/packages/core/src/render3/di.ts index 0ef22a7ae5c..e118e4ff015 100644 --- a/packages/core/src/render3/di.ts +++ b/packages/core/src/render3/di.ts @@ -739,7 +739,7 @@ function shouldSearchParent(flags: InjectFlags, isFirstHostTNode: boolean): bool } export function getNodeInjectorLView(nodeInjector: NodeInjector): LView { - return nodeInjector._lView; + return (nodeInjector as any)._lView as LView; } export function getNodeInjectorTNode(nodeInjector: NodeInjector): TElementNode|TContainerNode| @@ -751,7 +751,7 @@ export function getNodeInjectorTNode(nodeInjector: NodeInjector): TElementNode|T export class NodeInjector implements Injector { constructor( private _tNode: TElementNode|TContainerNode|TElementContainerNode|null, - public _lView: LView) {} + private _lView: LView) {} get(token: any, notFoundValue?: any, flags?: InjectFlags|InjectOptions): any { return getOrCreateInjectable( @@ -761,7 +761,7 @@ export class NodeInjector implements Injector { /** Creates a `NodeInjector` for the current node. */ export function createNodeInjector(): Injector { - return new NodeInjector(getCurrentTNode()! as TDirectiveHostNode, getLView()); + return new NodeInjector(getCurrentTNode()! as TDirectiveHostNode, getLView()) as any; } /** diff --git a/packages/core/src/render3/reactivity/effect.ts b/packages/core/src/render3/reactivity/effect.ts index 991d8800a9e..525edaea497 100644 --- a/packages/core/src/render3/reactivity/effect.ts +++ b/packages/core/src/render3/reactivity/effect.ts @@ -15,7 +15,7 @@ import {Injector} from '../../di/injector'; import {inject} from '../../di/injector_compatibility'; import {ɵɵdefineInjectable} from '../../di/interface/defs'; import {ErrorHandler} from '../../error_handler'; -import type {InternalViewRef} from '../view_ref'; +import type {ViewRef} from '../view_ref'; import {DestroyRef} from '../../linker/destroy_ref'; import {FLAGS, LViewFlags, EFFECTS_TO_SCHEDULE} from '../interfaces/view'; @@ -279,8 +279,7 @@ export function effect( // the context of a component or not. If it is, then we check whether the component has already // run its update pass, and defer the effect's initial scheduling until the update pass if it // hasn't already run. - const cdr = - injector.get(ChangeDetectorRef, null, {optional: true}) as InternalViewRef| null; + const cdr = injector.get(ChangeDetectorRef, null, {optional: true}) as ViewRef| null; if (!cdr || !(cdr._lView[FLAGS] & LViewFlags.FirstLViewPass)) { // This effect is either not running in a view injector, or the view has already // undergone its first change detection pass, which is necessary for any required inputs to be diff --git a/packages/core/src/render3/view_ref.ts b/packages/core/src/render3/view_ref.ts index 3bc67809329..8082311c5ee 100644 --- a/packages/core/src/render3/view_ref.ts +++ b/packages/core/src/render3/view_ref.ts @@ -8,7 +8,7 @@ import {ChangeDetectorRef} from '../change_detection/change_detector_ref'; import {RuntimeError, RuntimeErrorCode} from '../errors'; -import {EmbeddedViewRef, ViewRefTracker} from '../linker/view_ref'; +import {EmbeddedViewRef, InternalViewRef, ViewRefTracker} from '../linker/view_ref'; import {removeFromArray} from '../util/array_utils'; import {assertEqual} from '../util/assert'; @@ -27,7 +27,7 @@ import {storeLViewOnDestroy, updateAncestorTraversalFlagsOnAttach} from './util/ // the multiple @extends by making the annotation @implements instead interface ChangeDetectorRefInterface extends ChangeDetectorRef {} -export class InternalViewRef implements EmbeddedViewRef, ChangeDetectorRefInterface { +export class ViewRef implements EmbeddedViewRef, InternalViewRef, ChangeDetectorRefInterface { private _appRef: ViewRefTracker|null = null; private _attachedToViewContainer = false; @@ -46,6 +46,8 @@ export class InternalViewRef implements EmbeddedViewRef, ChangeDetectorRef * * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded * view. + * + * @internal */ public _lView: LView, @@ -87,7 +89,7 @@ export class InternalViewRef implements EmbeddedViewRef, ChangeDetectorRef } else if (this._attachedToViewContainer) { const parent = this._lView[PARENT]; if (isLContainer(parent)) { - const viewRefs = parent[VIEW_REFS] as InternalViewRef[] | null; + const viewRefs = parent[VIEW_REFS] as ViewRef[] | null; const index = viewRefs ? viewRefs.indexOf(this) : -1; if (index > -1) { ngDevMode && @@ -322,3 +324,30 @@ export class InternalViewRef implements EmbeddedViewRef, ChangeDetectorRef this._appRef = appRef; } } + +/** @internal */ +export class RootViewRef extends ViewRef { + constructor(public _view: LView) { + super(_view); + } + + override detectChanges(): void { + const lView = this._view; + const tView = lView[TVIEW]; + const context = lView[CONTEXT]; + detectChangesInternal(tView, lView, context, false); + } + + override checkNoChanges(): void { + if (ngDevMode) { + const lView = this._view; + const tView = lView[TVIEW]; + const context = lView[CONTEXT]; + checkNoChangesInternal(tView, lView, context, false); + } + } + + override get context(): T { + return null!; + } +} diff --git a/packages/core/test/acceptance/di_spec.ts b/packages/core/test/acceptance/di_spec.ts index 186e03e7817..8b94e5a7a9d 100644 --- a/packages/core/test/acceptance/di_spec.ts +++ b/packages/core/test/acceptance/di_spec.ts @@ -9,7 +9,7 @@ import {CommonModule} from '@angular/common'; import {assertInInjectionContext, Attribute, ChangeDetectorRef, Component, ComponentRef, createEnvironmentInjector, createNgModule, Directive, ElementRef, ENVIRONMENT_INITIALIZER, EnvironmentInjector, EventEmitter, forwardRef, Host, HostBinding, ImportedNgModuleProviders, importProvidersFrom, ImportProvidersSource, inject, Inject, Injectable, InjectFlags, InjectionToken, InjectOptions, INJECTOR, Injector, Input, LOCALE_ID, makeEnvironmentProviders, ModuleWithProviders, NgModule, NgModuleRef, NgZone, Optional, Output, Pipe, PipeTransform, Provider, runInInjectionContext, Self, SkipSelf, TemplateRef, Type, ViewChild, ViewContainerRef, ViewEncapsulation, ViewRef, ɵcreateInjector as createInjector, ɵDEFAULT_LOCALE_ID as DEFAULT_LOCALE_ID, ɵINJECTOR_SCOPE, ɵInternalEnvironmentProviders as InternalEnvironmentProviders} from '@angular/core'; import {RuntimeError, RuntimeErrorCode} from '@angular/core/src/errors'; -import {InternalViewRef as ViewRefInternal} from '@angular/core/src/render3/view_ref'; +import {ViewRef as ViewRefInternal} from '@angular/core/src/render3/view_ref'; import {TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; import {BehaviorSubject} from 'rxjs'; diff --git a/packages/core/test/acceptance/view_ref_spec.ts b/packages/core/test/acceptance/view_ref_spec.ts index 3461c17a04d..224cb05d23d 100644 --- a/packages/core/test/acceptance/view_ref_spec.ts +++ b/packages/core/test/acceptance/view_ref_spec.ts @@ -7,7 +7,7 @@ */ import {ApplicationRef, ChangeDetectorRef, Component, ComponentRef, createComponent, ElementRef, EmbeddedViewRef, EnvironmentInjector, Injector, TemplateRef, ViewChild, ViewContainerRef} from '@angular/core'; -import {InternalViewRef} from '@angular/core/src/render3/view_ref'; +import {InternalViewRef} from '@angular/core/src/linker/view_ref'; import {TestBed} from '@angular/core/testing'; @@ -25,12 +25,12 @@ describe('ViewRef', () => { create() { this.componentRef = createComponent(DynamicComponent, {environmentInjector: this.injector}); - (this.componentRef.hostView as InternalViewRef).attachToAppRef(this.appRef); + (this.componentRef.hostView as InternalViewRef).attachToAppRef(this.appRef); document.body.appendChild(this.componentRef.instance.elRef.nativeElement); } destroy() { - (this.componentRef.hostView as InternalViewRef).detachFromAppRef(); + (this.componentRef.hostView as InternalViewRef).detachFromAppRef(); } } @@ -54,7 +54,7 @@ describe('ViewRef', () => { @Component({template: ''}) class App { constructor(changeDetectorRef: ChangeDetectorRef) { - (changeDetectorRef as InternalViewRef).onDestroy(() => called = true); + (changeDetectorRef as InternalViewRef).onDestroy(() => called = true); } } diff --git a/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json b/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json index ec3e3d9d53b..b99c8599be3 100644 --- a/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json +++ b/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json @@ -269,9 +269,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "LEAVE_TOKEN_REGEX" }, @@ -548,6 +545,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "WebAnimationsDriver" }, diff --git a/packages/core/test/bundling/animations/bundle.golden_symbols.json b/packages/core/test/bundling/animations/bundle.golden_symbols.json index b0892a3e1b4..073f6e93d01 100644 --- a/packages/core/test/bundling/animations/bundle.golden_symbols.json +++ b/packages/core/test/bundling/animations/bundle.golden_symbols.json @@ -290,9 +290,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "KeyEventsPlugin" }, @@ -602,6 +599,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "WebAnimationsDriver" }, diff --git a/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json b/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json index e6d577ba89e..4106df95059 100644 --- a/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json +++ b/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json @@ -194,9 +194,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "KeyEventsPlugin" }, @@ -458,6 +455,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/defer/bundle.golden_symbols.json b/packages/core/test/bundling/defer/bundle.golden_symbols.json index 4d62af2c684..48a5fcdea7f 100644 --- a/packages/core/test/bundling/defer/bundle.golden_symbols.json +++ b/packages/core/test/bundling/defer/bundle.golden_symbols.json @@ -227,9 +227,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "KeyEventsPlugin" }, @@ -509,6 +506,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json index c7f78e002cb..498fb7eea1a 100644 --- a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json +++ b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json @@ -272,9 +272,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "IterableChangeRecord_" }, @@ -614,6 +611,9 @@ { "name": "ViewEngineTemplateRef" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json index c9bbbf99c70..922e162aeab 100644 --- a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json +++ b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json @@ -257,9 +257,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "IterableChangeRecord_" }, @@ -605,6 +602,9 @@ { "name": "ViewEngineTemplateRef" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/hello_world/bundle.golden_symbols.json b/packages/core/test/bundling/hello_world/bundle.golden_symbols.json index 9d33864b68e..b9f737eec05 100644 --- a/packages/core/test/bundling/hello_world/bundle.golden_symbols.json +++ b/packages/core/test/bundling/hello_world/bundle.golden_symbols.json @@ -137,9 +137,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "LOCALE_ID2" }, @@ -350,6 +347,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/hydration/bundle.golden_symbols.json b/packages/core/test/bundling/hydration/bundle.golden_symbols.json index 6356ad72785..a906a365e9b 100644 --- a/packages/core/test/bundling/hydration/bundle.golden_symbols.json +++ b/packages/core/test/bundling/hydration/bundle.golden_symbols.json @@ -245,9 +245,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "LOCALE_ID2" }, @@ -539,6 +536,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/router/bundle.golden_symbols.json b/packages/core/test/bundling/router/bundle.golden_symbols.json index 85c1b191b43..0075b57a9a1 100644 --- a/packages/core/test/bundling/router/bundle.golden_symbols.json +++ b/packages/core/test/bundling/router/bundle.golden_symbols.json @@ -323,9 +323,6 @@ { "name": "InnerSubscriber" }, - { - "name": "InternalViewRef" - }, { "name": "ItemComponent" }, @@ -845,6 +842,9 @@ { "name": "ViewEngineTemplateRef" }, + { + "name": "ViewRef" + }, { "name": "XSS_SECURITY_URL" }, diff --git a/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json b/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json index ae12373e502..4bb8f2963c0 100644 --- a/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json +++ b/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json @@ -179,9 +179,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "LOCALE_ID2" }, @@ -410,6 +407,9 @@ { "name": "ViewEncapsulation" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/test/bundling/todo/bundle.golden_symbols.json b/packages/core/test/bundling/todo/bundle.golden_symbols.json index adc3abfd13d..0ba233c5ce4 100644 --- a/packages/core/test/bundling/todo/bundle.golden_symbols.json +++ b/packages/core/test/bundling/todo/bundle.golden_symbols.json @@ -197,9 +197,6 @@ { "name": "Injector" }, - { - "name": "InternalViewRef" - }, { "name": "IterableChangeRecord_" }, @@ -530,6 +527,9 @@ { "name": "ViewEngineTemplateRef" }, + { + "name": "ViewRef" + }, { "name": "ZONE_IS_STABLE_OBSERVABLE" }, diff --git a/packages/core/testing/src/component_fixture.ts b/packages/core/testing/src/component_fixture.ts index 3579b8be41c..c3f14a8667c 100644 --- a/packages/core/testing/src/component_fixture.ts +++ b/packages/core/testing/src/component_fixture.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {ChangeDetectorRef, ComponentRef, DebugElement, ElementRef, getDebugNode, NgZone, RendererFactory2, ɵDeferBlockDetails as DeferBlockDetails, ɵFlushableEffectRunner as FlushableEffectRunner, ɵgetDeferBlocks as getDeferBlocks, ɵInternalViewRef as InternalViewRef} from '@angular/core'; +import {ChangeDetectorRef, ComponentRef, DebugElement, ElementRef, getDebugNode, NgZone, RendererFactory2, ɵDeferBlockDetails as DeferBlockDetails, ɵFlushableEffectRunner as FlushableEffectRunner, ɵgetDeferBlocks as getDeferBlocks} from '@angular/core'; import {Subscription} from 'rxjs'; import {DeferBlockFixture} from './defer'; @@ -194,7 +194,7 @@ export class ComponentFixture { */ getDeferBlocks(): Promise { const deferBlocks: DeferBlockDetails[] = []; - const lView = (this.componentRef.hostView as InternalViewRef)._lView; + const lView = (this.componentRef.hostView as any)['_lView']; getDeferBlocks(lView, deferBlocks); const deferBlockFixtures = [];