我有以下幾點:combineLatest誤差值
static phones: Map<number, {}> = new Map<number, {}>();
...
Observable.combineLatest(
this.form.statusChanges,
this.form.valueChanges,
(status, value) => ({ status, value }))
.debounceTime(500)
.subscribe(
({ status, value }) => {
PhoneComponent.phones.set(this.rowIndex, value);
}
當窗體變爲有效的第一次,地圖值設定,沒有任何問題。但是,如果我要在表格上值再次改變我得到的異常以下(PhoneComponent是正在使用combineLatest我的自定義組件)
Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.
error_handler.js:47 EXCEPTION: PhoneComponent_1.phones.set is not a function
ErrorHandler.handleError @ error_handler.js:47
next @ application_ref.js:272
schedulerFn @ async.js:82
SafeSubscriber.__tryOrUnsub @ Subscriber.js:223
SafeSubscriber.next @ Subscriber.js:172
Subscriber._next @ Subscriber.js:125
Subscriber.next @ Subscriber.js:89
Subject.next @ Subject.js:55
EventEmitter.emit @ async.js:74
NgZone.triggerError @ ng_zone.js:278
onHandleError @ ng_zone.js:257
ZoneDelegate.handleError @ zone.js:236
Zone.runTask @ zone.js:157
ZoneTask.invoke @ zone.js:335
data.args.(anonymous function) @ zone.js:970
error_handler.js:52 ORIGINAL STACKTRACE:
ErrorHandler.handleError @ error_handler.js:52
next @ application_ref.js:272
schedulerFn @ async.js:82
SafeSubscriber.__tryOrUnsub @ Subscriber.js:223
SafeSubscriber.next @ Subscriber.js:172
Subscriber._next @ Subscriber.js:125
Subscriber.next @ Subscriber.js:89
Subject.next @ Subject.js:55
EventEmitter.emit @ async.js:74
NgZone.triggerError @ ng_zone.js:278
onHandleError @ ng_zone.js:257
ZoneDelegate.handleError @ zone.js:236
Zone.runTask @ zone.js:157
ZoneTask.invoke @ zone.js:335
data.args.(anonymous function) @ zone.js:970
error_handler.js:53 TypeError: PhoneComponent_1.phones.set is not a function
at SafeSubscriber.__WEBPACK_IMPORTED_MODULE_2_rxjs__.Observable.combineLatest.debounceTime.subscribe [as _next] (phone.component.ts:137)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:223)
at SafeSubscriber.next (Subscriber.js:172)
at Subscriber._next (Subscriber.js:125)
at Subscriber.next (Subscriber.js:89)
at DebounceTimeSubscriber.debouncedNext (debounceTime.js:98)
at AsyncAction.dispatchNext (debounceTime.js:114)
at AsyncAction._execute (AsyncAction.js:111)
at AsyncAction.execute (AsyncAction.js:86)
at AsyncScheduler.flush (AsyncScheduler.js:36)
ErrorHandler.handleError @ error_handler.js:53
next @ application_ref.js:272
schedulerFn @ async.js:82
SafeSubscriber.__tryOrUnsub @ Subscriber.js:223
SafeSubscriber.next @ Subscriber.js:172
Subscriber._next @ Subscriber.js:125
Subscriber.next @ Subscriber.js:89
Subject.next @ Subject.js:55
EventEmitter.emit @ async.js:74
NgZone.triggerError @ ng_zone.js:278
onHandleError @ ng_zone.js:257
ZoneDelegate.handleError @ zone.js:236
Zone.runTask @ zone.js:157
ZoneTask.invoke @ zone.js:335
data.args.(anonymous function) @ zone.js:970
phone.component.ts:137 Uncaught TypeError: PhoneComponent_1.phones.set is not a function
at SafeSubscriber.__WEBPACK_IMPORTED_MODULE_2_rxjs__.Observable.combineLatest.debounceTime.subscribe [as _next] (phone.component.ts:137)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:223)
at SafeSubscriber.next (Subscriber.js:172)
at Subscriber._next (Subscriber.js:125)
at Subscriber.next (Subscriber.js:89)
at DebounceTimeSubscriber.debouncedNext (debounceTime.js:98)
at AsyncAction.dispatchNext (debounceTime.js:114)
at AsyncAction._execute (AsyncAction.js:111)
at AsyncAction.execute (AsyncAction.js:86)
at AsyncScheduler.flush (AsyncScheduler.js:36)
__WEBPACK_IMPORTED_MODULE_2_rxjs__.Observable.combineLatest.debounceTime.subscribe @ phone.component.ts:137
SafeSubscriber.__tryOrUnsub @ Subscriber.js:223
SafeSubscriber.next @ Subscriber.js:172
Subscriber._next @ Subscriber.js:125
Subscriber.next @ Subscriber.js:89
DebounceTimeSubscriber.debouncedNext @ debounceTime.js:98
dispatchNext @ debounceTime.js:114
AsyncAction._execute @ AsyncAction.js:111
AsyncAction.execute @ AsyncAction.js:86
AsyncScheduler.flush @ AsyncScheduler.js:36
ZoneDelegate.invokeTask @ zone.js:265
onInvokeTask @ ng_zone.js:227
ZoneDelegate.invokeTask @ zone.js:264
Zone.runTask @ zone.js:154
ZoneTask.invoke @ zone.js:335
data.args.(anonymous function) @ zone.js:970
請爲這個問題提供一個解決方法,您可以使用[this one](http://embed.plnkr.co/w2FVfKlWP72pzXIsfsCU/)作爲模板。 –