diff --git a/packages/compiler-cli/test/compliance/r3_compiler_compliance_spec.ts b/packages/compiler-cli/test/compliance/r3_compiler_compliance_spec.ts index cded85e3e9..b5df38197c 100644 --- a/packages/compiler-cli/test/compliance/r3_compiler_compliance_spec.ts +++ b/packages/compiler-cli/test/compliance/r3_compiler_compliance_spec.ts @@ -1139,7 +1139,7 @@ describe('compiler compliance', () => { ` }; - it('should support view queries', () => { + it('should support view queries with directives', () => { const files = { app: { ...directive, @@ -1159,7 +1159,7 @@ describe('compiler compliance', () => { @NgModule({declarations: [SomeDirective, ViewQueryComponent]}) export class MyModule {} - ` + ` } }; @@ -1196,11 +1196,111 @@ describe('compiler compliance', () => { expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); }); - it('should support content queries', () => { + it('should support view queries with local refs', () => { + const files = { + app: { + 'view_query.component.ts': ` + import {Component, NgModule, ViewChild, ViewChildren, QueryList} from '@angular/core'; + + @Component({ + selector: 'view-query-component', + template: \` +
+
+ \` + }) + export class ViewQueryComponent { + @ViewChild('myRef') myRef: any; + @ViewChildren('myRef1, myRef2, myRef3') myRefs: QueryList; + } + + @NgModule({declarations: [ViewQueryComponent]}) + export class MyModule {} + ` + } + }; + + const ViewQueryComponentDefinition = ` + const $e0_attrs$ = ["myRef", ""]; + const $e1_attrs$ = ["myRef1", ""]; + … + ViewQueryComponent.ngComponentDef = $r3$.ɵdefineComponent({ + … + viewQuery: function ViewQueryComponent_Query(rf, ctx) { + if (rf & 1) { + $r3$.ɵquery(0, ["myRef"], true); + $r3$.ɵquery(1, ["myRef1", "myRef2", "myRef3"], true); + } + if (rf & 2) { + var $tmp$; + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵload(0))) && (ctx.myRef = $tmp$.first)); + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵload(1))) && (ctx.myRefs = $tmp$)); + } + }, + … + });`; + + const result = compile(files, angularFiles); + const source = result.source; + + expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); + }); + + it('should support view queries with read tokens specified', () => { + const files = { + app: { + 'view_query.component.ts': ` + import {Component, NgModule, ViewChild, ViewChildren, QueryList, ElementRef} from '@angular/core'; + + @Component({ + selector: 'view-query-component', + template: \` +
+
+ \` + }) + export class ViewQueryComponent { + @ViewChild('myRef', {read: ElementRef}) myRef: any; + @ViewChildren('myRef1, myRef2, myRef3', {read: ElementRef}) myRefs: QueryList; + } + + @NgModule({declarations: [ViewQueryComponent]}) + export class MyModule {} + ` + } + }; + + const ViewQueryComponentDefinition = ` + const $e0_attrs$ = ["myRef", ""]; + const $e1_attrs$ = ["myRef1", ""]; + … + ViewQueryComponent.ngComponentDef = $r3$.ɵdefineComponent({ + … + viewQuery: function ViewQueryComponent_Query(rf, ctx) { + if (rf & 1) { + $r3$.ɵquery(0, ["myRef"], true, ElementRef); + $r3$.ɵquery(1, ["myRef1", "myRef2", "myRef3"], true, ElementRef); + } + if (rf & 2) { + var $tmp$; + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵload(0))) && (ctx.myRef = $tmp$.first)); + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵload(1))) && (ctx.myRefs = $tmp$)); + } + }, + … + });`; + + const result = compile(files, angularFiles); + const source = result.source; + + expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); + }); + + it('should support content queries with directives', () => { const files = { app: { ...directive, - 'spec.ts': ` + 'content_query.ts': ` import {Component, ContentChild, ContentChildren, NgModule, QueryList} from '@angular/core'; import {SomeDirective} from './some.directive'; @@ -1262,12 +1362,110 @@ describe('compiler compliance', () => { });`; const result = compile(files, angularFiles); - const source = result.source; + expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); }); }); + it('should support content queries with local refs', () => { + const files = { + app: { + 'content_query.component.ts': ` + import {Component, ContentChild, ContentChildren, NgModule, QueryList} from '@angular/core'; + + @Component({ + selector: 'content-query-component', + template: \` +
+
+ \` + }) + export class ContentQueryComponent { + @ContentChild('myRef') myRef: any; + @ContentChildren('myRef1, myRef2, myRef3') myRefs: QueryList; + } + + @NgModule({declarations: [ContentQueryComponent]}) + export class MyModule {} + ` + } + }; + + const ContentQueryComponentDefinition = ` + const $e0_attrs$ = ["myRef", ""]; + const $e1_attrs$ = ["myRef1", ""]; + … + ContentQueryComponent.ngComponentDef = $r3$.ɵdefineComponent({ + … + contentQueries: function ContentQueryComponent_ContentQueries() { + $r3$.ɵregisterContentQuery($r3$.ɵquery(null, ["myRef"], true)); + $r3$.ɵregisterContentQuery($r3$.ɵquery(null, ["myRef1", "myRef2", "myRef3"], false)); + }, + contentQueriesRefresh: function ContentQueryComponent_ContentQueriesRefresh(dirIndex, queryStartIndex) { + const instance = $r3$.ɵloadDirective(dirIndex); + var $tmp$; + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵloadQueryList(queryStartIndex))) && (instance.myRef = $tmp$.first)); + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵloadQueryList((queryStartIndex + 1)))) && (instance.myRefs = $tmp$)); + }, + … + });`; + + const result = compile(files, angularFiles); + const source = result.source; + + expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); + }); + + it('should support content queries with read tokens specified', () => { + const files = { + app: { + 'content_query.component.ts': ` + import {Component, ContentChild, ContentChildren, NgModule, QueryList, ElementRef} from '@angular/core'; + + @Component({ + selector: 'content-query-component', + template: \` +
+
+ \` + }) + export class ContentQueryComponent { + @ContentChild('myRef', {read: ElementRef}) myRef: any; + @ContentChildren('myRef1, myRef2, myRef3', {read: ElementRef}) myRefs: QueryList; + } + + @NgModule({declarations: [ContentQueryComponent]}) + export class MyModule {} + ` + } + }; + + const ContentQueryComponentDefinition = ` + const $e0_attrs$ = ["myRef", ""]; + const $e1_attrs$ = ["myRef1", ""]; + … + ContentQueryComponent.ngComponentDef = $r3$.ɵdefineComponent({ + … + contentQueries: function ContentQueryComponent_ContentQueries() { + $r3$.ɵregisterContentQuery($r3$.ɵquery(null, ["myRef"], true, ElementRef)); + $r3$.ɵregisterContentQuery($r3$.ɵquery(null, ["myRef1", "myRef2", "myRef3"], false, ElementRef)); + }, + contentQueriesRefresh: function ContentQueryComponent_ContentQueriesRefresh(dirIndex, queryStartIndex) { + const instance = $r3$.ɵloadDirective(dirIndex); + var $tmp$; + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵloadQueryList(queryStartIndex))) && (instance.myRef = $tmp$.first)); + ($r3$.ɵqueryRefresh(($tmp$ = $r3$.ɵloadQueryList((queryStartIndex + 1)))) && (instance.myRefs = $tmp$)); + }, + … + });`; + + const result = compile(files, angularFiles); + const source = result.source; + + expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); + }); + describe('pipes', () => { const files = { diff --git a/packages/compiler/src/render3/view/util.ts b/packages/compiler/src/render3/view/util.ts index ab748de7c7..2d5ff8fbeb 100644 --- a/packages/compiler/src/render3/view/util.ts +++ b/packages/compiler/src/render3/view/util.ts @@ -104,8 +104,15 @@ export function trimTrailingNulls(parameters: o.Expression[]): o.Expression[] { export function getQueryPredicate( query: R3QueryMetadata, constantPool: ConstantPool): o.Expression { if (Array.isArray(query.predicate)) { - return constantPool.getConstLiteral( - o.literalArr(query.predicate.map(selector => o.literal(selector) as o.Expression))); + let predicate: o.Expression[] = []; + query.predicate.forEach((selector: string): void => { + // Each item in predicates array may contain strings with comma-separated refs + // (for ex. 'ref, ref1, ..., refN'), thus we extract individual refs and store them + // as separate array entities + const selectors = selector.split(',').map(token => o.literal(token.trim())); + predicate.push(...selectors); + }); + return constantPool.getConstLiteral(o.literalArr(predicate)); } else { return query.predicate; } diff --git a/packages/core/src/core_render3_private_export.ts b/packages/core/src/core_render3_private_export.ts index 4d707d5423..f293a8109d 100644 --- a/packages/core/src/core_render3_private_export.ts +++ b/packages/core/src/core_render3_private_export.ts @@ -118,7 +118,7 @@ export { i18nMapping as ɵi18nMapping, I18nInstruction as ɵI18nInstruction, I18nExpInstruction as ɵI18nExpInstruction, - WRAP_RENDERER_FACTORY2 as ɵWRAP_RENDERER_FACTORY2, + WRAP_RENDERER_FACTORY2 as ɵWRAP_RENDERER_FACTORY2 } from './render3/index'; export { Render3DebugRendererFactory2 as ɵRender3DebugRendererFactory2 } from './render3/debug'; diff --git a/packages/core/src/render3/index.ts b/packages/core/src/render3/index.ts index 13436cf28e..28032c91f2 100644 --- a/packages/core/src/render3/index.ts +++ b/packages/core/src/render3/index.ts @@ -141,7 +141,7 @@ export { pureFunctionV, } from './pure_function'; -export {templateRefExtractor, QUERY_READ_ELEMENT_REF, QUERY_READ_CONTAINER_REF, QUERY_READ_FROM_NODE, QUERY_READ_TEMPLATE_REF} from './view_engine_compatibility_prebound'; +export {templateRefExtractor} from './view_engine_compatibility_prebound'; // clang-format on diff --git a/packages/core/src/render3/query.ts b/packages/core/src/render3/query.ts index 279846a7cb..a5715c515f 100644 --- a/packages/core/src/render3/query.ts +++ b/packages/core/src/render3/query.ts @@ -19,15 +19,15 @@ import {Type} from '../type'; import {getSymbolIterator} from '../util'; import {assertDefined, assertEqual} from './assert'; +import {NG_ELEMENT_ID} from './fields'; import {_getViewData, assertPreviousIsParent, getOrCreateCurrentQueries, store, storeCleanupWithContext} from './instructions'; import {DirectiveDefInternal, unusedValueExportToPlacateAjd as unused1} from './interfaces/definition'; -import {LInjector, unusedValueExportToPlacateAjd as unused2} from './interfaces/injector'; -import {LContainerNode, LElementNode, TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeFlags, TNodeType, unusedValueExportToPlacateAjd as unused3} from './interfaces/node'; +import {unusedValueExportToPlacateAjd as unused2} from './interfaces/injector'; +import {TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeFlags, TNodeType, unusedValueExportToPlacateAjd as unused3} from './interfaces/node'; import {LQueries, QueryReadType, unusedValueExportToPlacateAjd as unused4} from './interfaces/query'; import {DIRECTIVES, LViewData, TVIEW} from './interfaces/view'; -import {assertNodeOfPossibleTypes} from './node_assert'; -import {flatten, getLNode, isContentQueryHost} from './util'; -import {createContainerRef, createElementRef, createTemplateRef} from './view_engine_compatibility'; +import {flatten, isContentQueryHost} from './util'; +import {createElementRef, createTemplateRef} from './view_engine_compatibility'; const unusedValueToPlacateAjd = unused1 + unused2 + unused3 + unused4; @@ -268,11 +268,11 @@ function getIdxOfMatchingDirective(tNode: TNode, currentView: LViewData, type: T return null; } -function readFromNodeInjector( - tNode: TNode, currentView: LViewData, read: QueryReadType| Type, - directiveIdx: number): any { - if (read instanceof ReadFromInjectorFn) { - return read.read(tNode, currentView, directiveIdx); +// TODO: "read" should be an AbstractType (FW-486) +function queryRead(tNode: TNode, currentView: LViewData, read: any): any { + const factoryFn = (read as any)[NG_ELEMENT_ID]; + if (typeof factoryFn === 'function') { + return factoryFn(); } else { const matchingIdx = getIdxOfMatchingDirective(tNode, currentView, read as Type); if (matchingIdx !== null) { @@ -282,6 +282,16 @@ function readFromNodeInjector( return null; } +function queryReadByTNodeType(tNode: TNode, currentView: LViewData): any { + if (tNode.type === TNodeType.Element || tNode.type === TNodeType.ElementContainer) { + return createElementRef(ViewEngine_ElementRef, tNode, currentView); + } + if (tNode.type === TNodeType.Container) { + return createTemplateRef(ViewEngine_TemplateRef, ViewEngine_ElementRef, tNode, currentView); + } + return null; +} + function add( query: LQuery| null, tNode: TElementNode | TContainerNode | TElementContainerNode) { const currentView = _getViewData(); @@ -290,25 +300,29 @@ function add( const predicate = query.predicate; const type = predicate.type; if (type) { - const directiveIdx = getIdxOfMatchingDirective(tNode, currentView, type); - if (directiveIdx !== null) { - // a node is matching a predicate - determine what to read - // if read token and / or strategy is not specified, use type as read token - const result = - readFromNodeInjector(tNode, currentView, predicate.read || type, directiveIdx); - if (result !== null) { - addMatch(query, result); - } + // if read token and / or strategy is not specified, use type as read token + const result = queryRead(tNode, currentView, predicate.read || type); + if (result !== null) { + addMatch(query, result); } } else { const selector = predicate.selector !; for (let i = 0; i < selector.length; i++) { const directiveIdx = getIdxOfMatchingSelector(tNode, selector[i]); if (directiveIdx !== null) { - // a node is matching a predicate - determine what to read - // note that queries using name selector must specify read strategy - ngDevMode && assertDefined(predicate.read, 'the node should have a predicate'); - const result = readFromNodeInjector(tNode, currentView, predicate.read !, directiveIdx); + let result: any = null; + if (predicate.read) { + result = queryRead(tNode, currentView, predicate.read); + } else { + if (directiveIdx > -1) { + result = currentView[DIRECTIVES] ![directiveIdx]; + } else { + // if read token and / or strategy is not specified, + // detect it using appropriate tNode type + result = queryReadByTNodeType(tNode, currentView); + } + } + if (result !== null) { addMatch(query, result); } @@ -445,7 +459,8 @@ export const QueryList: typeof viewEngine_QueryList = QueryList_ as any; */ export function query( memoryIndex: number | null, predicate: Type| string[], descend?: boolean, - read?: QueryReadType| Type): QueryList { + // TODO: "read" should be an AbstractType (FW-486) + read?: any): QueryList { ngDevMode && assertPreviousIsParent(); const queryList = new QueryList(); const queries = getOrCreateCurrentQueries(LQueries_); @@ -470,8 +485,4 @@ export function queryRefresh(queryList: QueryList): boolean { return true; } return false; -} - -export class ReadFromInjectorFn { - constructor(readonly read: (tNode: TNode, view: LViewData, directiveIndex?: number) => T) {} -} +} \ No newline at end of file diff --git a/packages/core/src/render3/view_engine_compatibility_prebound.ts b/packages/core/src/render3/view_engine_compatibility_prebound.ts index 79f8d5b1c4..79b30ab9be 100644 --- a/packages/core/src/render3/view_engine_compatibility_prebound.ts +++ b/packages/core/src/render3/view_engine_compatibility_prebound.ts @@ -9,14 +9,10 @@ import {ElementRef as ViewEngine_ElementRef} from '../linker/element_ref'; import {TemplateRef as ViewEngine_TemplateRef} from '../linker/template_ref'; -import {ViewContainerRef as ViewEngine_ViewContainerRef} from '../linker/view_container_ref'; -import {TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeType} from './interfaces/node'; -import {QueryReadType} from './interfaces/query'; -import {DIRECTIVES, LViewData} from './interfaces/view'; -import {assertNodeOfPossibleTypes} from './node_assert'; -import {ReadFromInjectorFn} from './query'; -import {createContainerRef, createElementRef, createTemplateRef} from './view_engine_compatibility'; +import {TNode} from './interfaces/node'; +import {LViewData} from './interfaces/view'; +import {createTemplateRef} from './view_engine_compatibility'; @@ -26,39 +22,4 @@ import {createContainerRef, createElementRef, createTemplateRef} from './view_en */ export function templateRefExtractor(tNode: TNode, currentView: LViewData) { return createTemplateRef(ViewEngine_TemplateRef, ViewEngine_ElementRef, tNode, currentView); -} - -export const QUERY_READ_ELEMENT_REF = >( - new ReadFromInjectorFn((tNode: TNode, view: LViewData) => { - return createElementRef(ViewEngine_ElementRef, tNode, view); - }) as any); - -export const QUERY_READ_TEMPLATE_REF = - new ReadFromInjectorFn>((tNode: TNode, view: LViewData) => { - return createTemplateRef(ViewEngine_TemplateRef, ViewEngine_ElementRef, tNode, view); - }) as any; - -export const QUERY_READ_CONTAINER_REF = >( - new ReadFromInjectorFn( - (tNode: TNode, view: LViewData) => createContainerRef( - ViewEngine_ViewContainerRef, ViewEngine_ElementRef, - tNode as TElementNode | TContainerNode | TElementContainerNode, view)) as any); - -export const QUERY_READ_FROM_NODE = - new ReadFromInjectorFn((tNode: TNode, view: LViewData, directiveIdx: number) => { - ngDevMode && assertNodeOfPossibleTypes( - tNode, TNodeType.Container, TNodeType.Element, TNodeType.ElementContainer); - if (directiveIdx > -1) { - return view[DIRECTIVES] ![directiveIdx]; - } - if (tNode.type === TNodeType.Element || tNode.type === TNodeType.ElementContainer) { - return createElementRef(ViewEngine_ElementRef, tNode, view); - } - if (tNode.type === TNodeType.Container) { - return createTemplateRef(ViewEngine_TemplateRef, ViewEngine_ElementRef, tNode, view); - } - if (ngDevMode) { - // should never happen - throw new Error(`Unexpected node type: ${tNode.type}`); - } - }) as any as QueryReadType; +} \ No newline at end of file diff --git a/packages/core/test/render3/query_spec.ts b/packages/core/test/render3/query_spec.ts index f7afbfd1d0..3e0f529400 100644 --- a/packages/core/test/render3/query_spec.ts +++ b/packages/core/test/render3/query_spec.ts @@ -17,7 +17,7 @@ import {AttributeMarker, QueryList, defineComponent, defineDirective, detectChan import {bind, container, containerRefreshEnd, containerRefreshStart, element, elementContainerEnd, elementContainerStart, elementEnd, elementProperty, elementStart, embeddedViewEnd, embeddedViewStart, load, loadDirective, loadElement, loadQueryList, reference, registerContentQuery, template} from '../../src/render3/instructions'; import {RenderFlags} from '../../src/render3/interfaces/definition'; import {query, queryRefresh} from '../../src/render3/query'; -import {templateRefExtractor, QUERY_READ_ELEMENT_REF, QUERY_READ_CONTAINER_REF, QUERY_READ_FROM_NODE, QUERY_READ_TEMPLATE_REF} from '../../src/render3/view_engine_compatibility_prebound'; +import {templateRefExtractor} from '../../src/render3/view_engine_compatibility_prebound'; import {NgForOf, NgIf, NgTemplateOutlet} from './common_with_def'; import {ComponentFixture, TemplateFixture, createComponent, createDirective, renderComponent} from './render_util'; @@ -121,7 +121,7 @@ describe('query', () => { 2, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, Child, false, QUERY_READ_ELEMENT_REF); + query(0, Child, false, ElementRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -229,7 +229,7 @@ describe('query', () => { 4, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_FROM_NODE); + query(0, ['foo'], false); } if (rf & RenderFlags.Update) { let tmp: any; @@ -266,8 +266,8 @@ describe('query', () => { 6, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_FROM_NODE); - query(1, ['bar'], false, QUERY_READ_FROM_NODE); + query(0, ['foo'], false); + query(1, ['bar'], false); } if (rf & RenderFlags.Update) { let tmp: any; @@ -315,7 +315,7 @@ describe('query', () => { 6, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo', 'bar'], undefined, QUERY_READ_FROM_NODE); + query(0, ['foo', 'bar'], undefined); } if (rf & RenderFlags.Update) { let tmp: any; @@ -352,7 +352,7 @@ describe('query', () => { 4, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_ELEMENT_REF); + query(0, ['foo'], false); } if (rf & RenderFlags.Update) { let tmp: any; @@ -388,7 +388,7 @@ describe('query', () => { 3, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_ELEMENT_REF); + query(0, ['foo'], false, ElementRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -424,7 +424,7 @@ describe('query', () => { 3, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -488,8 +488,8 @@ describe('query', () => { 5, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_ELEMENT_REF); - query(1, ['foo'], false, QUERY_READ_ELEMENT_REF); + query(0, ['foo'], true, ElementRef); + query(1, ['foo'], false, ElementRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -523,7 +523,7 @@ describe('query', () => { 3, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_CONTAINER_REF); + query(0, ['foo'], false, ViewContainerRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -554,7 +554,7 @@ describe('query', () => { 3, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_CONTAINER_REF); + query(0, ['foo'], false, ViewContainerRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -587,7 +587,7 @@ describe('query', () => { function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_ELEMENT_REF); + query(0, ['foo'], false, ElementRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -621,7 +621,7 @@ describe('query', () => { 3, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], undefined, QUERY_READ_FROM_NODE); + query(0, ['foo'], undefined); } if (rf & RenderFlags.Update) { let tmp: any; @@ -653,7 +653,7 @@ describe('query', () => { 3, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_TEMPLATE_REF); + query(0, ['foo'], false, TemplateRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -690,7 +690,7 @@ describe('query', () => { 3, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -735,7 +735,7 @@ describe('query', () => { 3, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -773,7 +773,7 @@ describe('query', () => { 3, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -813,7 +813,7 @@ describe('query', () => { 4, 0, [Child1, Child2], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo', 'bar'], true, QUERY_READ_FROM_NODE); + query(0, ['foo', 'bar'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -852,8 +852,8 @@ describe('query', () => { 5, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); - query(1, ['bar'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); + query(1, ['bar'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -896,7 +896,7 @@ describe('query', () => { 3, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], undefined, QUERY_READ_ELEMENT_REF); + query(0, ['foo'], undefined, ElementRef); } if (rf & RenderFlags.Update) { let tmp: any; @@ -934,7 +934,7 @@ describe('query', () => { 4, 0, [Child], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo', 'bar'], undefined, QUERY_READ_FROM_NODE); + query(0, ['foo', 'bar'], undefined); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1042,7 +1042,7 @@ describe('query', () => { 3, 1, [NgIf], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1103,7 +1103,7 @@ describe('query', () => { viewQuery: function(rf: RenderFlags, ctx: Cmpt) { let tmp: any; if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { queryRefresh(tmp = load>(0)) && (ctx.query = tmp as QueryList); @@ -1189,7 +1189,7 @@ describe('query', () => { 9, 0, [ViewContainerManipulatorDirective], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1284,7 +1284,7 @@ describe('query', () => { viewQuery: (rf: RenderFlags, cmpt: Cmpt) => { let tmp: any; if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { queryRefresh(tmp = load>(0)) && @@ -1356,7 +1356,7 @@ describe('query', () => { viewQuery: (rf: RenderFlags, myApp: MyApp) => { let tmp: any; if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { queryRefresh(tmp = load>(0)) && @@ -1421,7 +1421,7 @@ describe('query', () => { 2, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1486,7 +1486,7 @@ describe('query', () => { 6, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1563,7 +1563,7 @@ describe('query', () => { 2, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1643,7 +1643,7 @@ describe('query', () => { 2, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1712,8 +1712,8 @@ describe('query', () => { 5, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); - query(1, ['foo'], false, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); + query(1, ['foo'], false); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1793,7 +1793,7 @@ describe('query', () => { 2, 0, [], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], false, QUERY_READ_FROM_NODE); + query(0, ['foo'], false); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1874,7 +1874,7 @@ describe('query', () => { 4, 0, [SomeDir], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo'], true, QUERY_READ_FROM_NODE); + query(0, ['foo'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -1911,8 +1911,7 @@ describe('query', () => { type: WithContentDirective, selectors: [['', 'with-content', '']], factory: () => new WithContentDirective(), - contentQueries: - () => { registerContentQuery(query(null, ['foo'], true, QUERY_READ_FROM_NODE)); }, + contentQueries: () => { registerContentQuery(query(null, ['foo'], true)); }, contentQueriesRefresh: (dirIndex: number, queryStartIdx: number) => { let tmp: any; withContentInstance = loadDirective(dirIndex); @@ -1933,8 +1932,7 @@ describe('query', () => { template: function(rf: RenderFlags, ctx: any) {}, consts: 0, vars: 0, - contentQueries: - () => { registerContentQuery(query(null, ['foo'], false, QUERY_READ_FROM_NODE)); }, + contentQueries: () => { registerContentQuery(query(null, ['foo'], false)); }, contentQueriesRefresh: (dirIndex: number, queryStartIdx: number) => { let tmp: any; shallowCompInstance = loadDirective(dirIndex); @@ -2050,7 +2048,7 @@ describe('query', () => { 6, 0, [WithContentDirective], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['foo', 'bar'], true, QUERY_READ_FROM_NODE); + query(0, ['foo', 'bar'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -2090,7 +2088,7 @@ describe('query', () => { 6, 0, [WithContentDirective], [], function(rf: RenderFlags, ctx: any) { if (rf & RenderFlags.Create) { - query(0, ['bar'], true, QUERY_READ_FROM_NODE); + query(0, ['bar'], true); } if (rf & RenderFlags.Update) { let tmp: any; @@ -2114,7 +2112,7 @@ describe('query', () => { contentQueries: () => { // @ContentChildren('foo, bar, baz', {descendants: true}) fooBars: // QueryList; - registerContentQuery(query(null, ['foo', 'bar', 'baz'], true, QUERY_READ_FROM_NODE)); + registerContentQuery(query(null, ['foo', 'bar', 'baz'], true)); }, contentQueriesRefresh: (dirIndex: number, queryStartIdx: number) => { let tmp: any; @@ -2178,7 +2176,7 @@ describe('query', () => { contentQueries: () => { // @ContentChildren('foo, bar, baz', {descendants: true}) fooBars: // QueryList; - registerContentQuery(query(null, ['foo'], false, QUERY_READ_FROM_NODE)); + registerContentQuery(query(null, ['foo'], false)); }, contentQueriesRefresh: (dirIndex: number, queryStartIdx: number) => { let tmp: any; @@ -2231,7 +2229,7 @@ describe('query', () => { factory: () => new ShallowQueryDirective(), contentQueries: () => { // @ContentChildren('foo', {descendants: false}) foos: QueryList; - registerContentQuery(query(null, ['foo'], false, QUERY_READ_FROM_NODE)); + registerContentQuery(query(null, ['foo'], false)); }, contentQueriesRefresh: (dirIndex: number, queryStartIdx: number) => { let tmp: any; @@ -2251,7 +2249,7 @@ describe('query', () => { factory: () => new DeepQueryDirective(), contentQueries: () => { // @ContentChildren('foo', {descendants: false}) foos: QueryList; - registerContentQuery(query(null, ['foo'], true, QUERY_READ_FROM_NODE)); + registerContentQuery(query(null, ['foo'], true)); }, contentQueriesRefresh: (dirIndex: number, queryStartIdx: number) => { let tmp: any; diff --git a/packages/core/test/render3/styling/players_spec.ts b/packages/core/test/render3/styling/players_spec.ts index 6c2d235322..6f1045f743 100644 --- a/packages/core/test/render3/styling/players_spec.ts +++ b/packages/core/test/render3/styling/players_spec.ts @@ -7,7 +7,7 @@ */ import {RenderFlags} from '@angular/core/src/render3'; -import {QUERY_READ_FROM_NODE, defineComponent, getHostElement} from '../../../src/render3/index'; +import {defineComponent, getHostElement} from '../../../src/render3/index'; import {element, elementEnd, elementStart, elementStyling, elementStylingApply, load, markDirty} from '../../../src/render3/instructions'; import {PlayState, Player, PlayerContext, PlayerHandler} from '../../../src/render3/interfaces/player'; import {RElement} from '../../../src/render3/interfaces/renderer'; @@ -289,7 +289,7 @@ class SuperComp { }, viewQuery: function(rf: RenderFlags, ctx: SuperComp) { if (rf & RenderFlags.Create) { - query(0, ['child'], true, QUERY_READ_FROM_NODE); + query(0, ['child'], true); } if (rf & RenderFlags.Update) { let tmp: any;