Skip to content

Commit 4b98ed1

Browse files
committed
fix(collection): iterator on Map keys is not supported (Safari)
Closes angular#2096
1 parent d308e55 commit 4b98ed1

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

modules/angular2/src/facade/collection.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,21 @@ var createMapFromMap: {(m: Map<any, any>): Map<any, any>} = (function() {
3838
return map;
3939
}
4040
})();
41+
var _clearValues: {(m: Map<any, any>)} = (function() {
42+
if ((<any>(new Map()).keys()).next) {
43+
return function _clearValues(m: Map<any, any>) {
44+
var keyIterator = m.keys();
45+
var k;
46+
while (!((k = (<any>keyIterator).next()).done)) {
47+
m.set(k.value, null);
48+
}
49+
};
50+
} else {
51+
return function _clearValuesWithForeEach(m: Map<any, any>) {
52+
m.forEach((v, k) => { m.set(k, null); });
53+
}
54+
}
55+
})();
4156

4257
export class MapWrapper {
4358
static create(): Map<any, any> { return new Map(); }
@@ -57,13 +72,7 @@ export class MapWrapper {
5772
static size(m: Map<any, any>) { return m.size; }
5873
static delete<K>(m: Map<K, any>, k: K) { m.delete(k); }
5974
static clear(m: Map<any, any>) { m.clear(); }
60-
static clearValues(m: Map<any, any>) {
61-
var keyIterator = m.keys();
62-
var k;
63-
while (!((k = (<any>keyIterator).next()).done)) {
64-
m.set(k.value, null);
65-
}
66-
}
75+
static clearValues(m: Map<any, any>) { _clearValues(m); }
6776
static iterable(m) { return m; }
6877
static keys<K>(m: Map<K, any>): List<K> { return m.keys(); }
6978
static values<V>(m: Map<any, V>): List<V> { return m.values(); }

0 commit comments

Comments
 (0)