From 47b73fd153aef14bc774a1d90c0e9882b155ed05 Mon Sep 17 00:00:00 2001 From: Emilio Date: Thu, 1 Feb 2018 22:26:27 -0800 Subject: [PATCH] fix(core): ensure initial value of QueryList length (#21980) (#21982) Set initial value of `length` to `0`. Fixes regression introduced by https://github.com/angular/angular/commit/e54474215629aa6a0e0497fe61bfc896cea532c9#diff-a85dbe0991a7577ea24b49374e9ae90b where the `length` property ceased to have initial value. Closes #21980 PR Close #21982 --- packages/core/src/linker/query_list.ts | 2 +- packages/core/test/linker/query_list_spec.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/core/src/linker/query_list.ts b/packages/core/src/linker/query_list.ts index 07edc590e9..af978bbc7e 100644 --- a/packages/core/src/linker/query_list.ts +++ b/packages/core/src/linker/query_list.ts @@ -41,7 +41,7 @@ export class QueryList/* implements Iterable */ { private _results: Array = []; public readonly changes: Observable = new EventEmitter(); - readonly length: number; + readonly length: number = 0; readonly first: T; readonly last: T; diff --git a/packages/core/test/linker/query_list_spec.ts b/packages/core/test/linker/query_list_spec.ts index a7fc644296..d0c795b7f1 100644 --- a/packages/core/test/linker/query_list_spec.ts +++ b/packages/core/test/linker/query_list_spec.ts @@ -23,6 +23,22 @@ import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; function logAppend(item: any /** TODO #9100 */) { log += (log.length == 0 ? '' : ', ') + item; } + describe('dirty and reset', () => { + + it('should initially be dirty and empty', () => { + expect(queryList.dirty).toBeTruthy(); + expect(queryList.length).toBe(0); + }); + + it('should be not dirty after reset', () => { + expect(queryList.dirty).toBeTruthy(); + queryList.reset(['one', 'two']); + expect(queryList.dirty).toBeFalsy(); + expect(queryList.length).toBe(2); + }); + + }); + it('should support resetting and iterating over the new objects', () => { queryList.reset(['one']); queryList.reset(['two']);