我在 Angular 4 :
中使用此方法modifyStock(id: number, quantity: number) {
const url = `/item/${id}/modifyStock`;
const body = { quantity: quantity };
return this.http.put(url, body);
}
我想控制是否有任何输入参数是null
,如果它发生就不要调用http.put()
,然后抛出必须在{{{{}>中捕获的错误1}} 调用此方法的方法。
我尝试了这个以及subscribe()
之类的一些组合,但我无法让它发挥作用。
throw Observable.throw('Error')
答案 0 :(得分:3)
您可以让观察者抛出错误:
this.data = new Observable(observer => {
setTimeout(() => {
observer.next(42);
}, 1000);
setTimeout(() => {
observer.next(43);
}, 2000);
setTimeout(() => {
observer.error('bla');
}, 2500);
setTimeout(() => {
observer.complete();
}, 3000);
});
答案 1 :(得分:1)
Observable.throw
应该有效。确保正确导入。
import { Observable } from "rxjs/Observable";
import 'rxjs/add/observable/throw';
你可以像在你的例子中那样使用它。
test() {
this.modifyStock(1, null).subscribe(() => {
console.log('success');
},
err => {
console.log('error', err);
})
}
modifyStock(id: number, quantity: number): Observable<any> {
if (id == null || quantity == null) {
return Observable.throw('Error');
}
const url = `/item/${id}/modifyStock`;
const body = { quantity: quantity };
return this.http.put(url, body);
}