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']);