An-*_*oid 2 javascript observable rxjs typescript angular
I'm having an issue with an observable :
In a service I have a function (in edit.component):
public patchOne(entity: Tier): Observable<any> {
const userData: any = this.httpService.getDataFromLocalStorage(AuthService.LOCAL_STORAGE_USER_TAG);
return this.httpService.patch(`/someurl/${entity.uid}`, {
params: {
user_uid: JSON.parse(userData).userUId,
},
body: entity.createPatchTier(),
}).map((res: any) => {
// TODO : to complete
return {};
}).catch((error: any) => Observable.throw('patchOne - ', error.json().errorMessage || 'Server error'));
}
Run Code Online (Sandbox Code Playgroud)
Calling it from component (in edit.component):
onSave() {
if (this.validateFormData()) {
this.tierService.patchOne(this._item).subscribe(() => {
this.appCommunicationService.valid('Success');
}, (error: any) => {
this.appCommunicationService.error(error.message);
});
} else {
this.appCommunicationService.info('Fail');
}
}
Run Code Online (Sandbox Code Playgroud)
Triggered from a button with this property (ViewComponent.html):
(click)="component.onSave()"
Run Code Online (Sandbox Code Playgroud)
I'm having this error uppon clicking :
ERROR TypeError: scheduler.schedule is not a function
at ErrorObservable.webpackJsonp.../../../../rxjs/observable/ErrorObservable.js.ErrorObservable._subscribe (ErrorObservable.js:72)
[...]
webpackJsonp.../../../../../src/app/components/edit/edit.component.ts.EditTiersComponent.onSave @ edit.component.ts:99
(anonymous) @ ViewComponent.html:14
Run Code Online (Sandbox Code Playgroud)
Any idea ?
看起来你在这一行有一个错误:
.catch((error: any) => Observable.throw('patchOne - ', error.json().errorMessage || 'Server error'));
Run Code Online (Sandbox Code Playgroud)
将Observable.throw具有以下特征:
public static throw(error: any, scheduler: Scheduler): Observable
Run Code Online (Sandbox Code Playgroud)
如您所见,第二个参数是scheduler. 在您的代码中,您提供了第二个参数,因此最终 RxJs 会尝试调用schedule您的字符串 ( error.json().errorMessage || 'Server error')。
您需要更新错误消息以使用字符串连接。例如:
'patchOne - ' + (error.json().errorMessage || 'Server error'))
Run Code Online (Sandbox Code Playgroud)
或者也许使用字符串插值:
`patchOne - ${(error.json().errorMessage || 'Server error')}`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |