Skip to content

Commit 71e19d6

Browse files
Casey Howardhansmaad
Casey Howard
authored and
hansmaad
committed
fix(filterFilter): Fix filtering using an object expression when the filter value is undefined
Fixes angular#10419 Closes angular#10424
1 parent 4e5d911 commit 71e19d6

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/ng/filter/filter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc
213213
} else if (expectedType === 'object') {
214214
for (key in expected) {
215215
var expectedVal = expected[key];
216-
if (isFunction(expectedVal)) {
216+
if (isFunction(expectedVal) || isUndefined(expectedVal)) {
217217
continue;
218218
}
219219

test/ng/filter/filterSpec.js

+9
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ describe('Filter: filter', function() {
4848
});
4949

5050

51+
it('should ignore undefined properties of the expression object', function() {
52+
var items = [{name: 'a'}, {name: 'abc'}];
53+
expect(filter(items, {name: undefined})).toEqual([{name: 'a'}, {name: 'abc'}]);
54+
55+
items = [{first: 'misko'}, {deep: {first: 'misko'}}, {deep: {last: 'hevery'}}];
56+
expect(filter(items, {deep: {first: undefined}})).toEqual([{deep: {first: 'misko'}}, {deep: {last: 'hevery'}}]);
57+
});
58+
59+
5160
it('should take function as predicate', function() {
5261
var items = [{name: 'a'}, {name: 'abc', done: true}];
5362
expect(filter(items, function(i) {return i.done;}).length).toBe(1);

0 commit comments

Comments
 (0)