我很担心在角度5中使用httpclient。我是角度新手,只是遵循官方的角度教程。我不太了解observables,promise,pipe等。目前我正在处理所有的http服务方法。对于post请求我使用pipe.Below是方法。
create(model: any,URI) :Observable<Object>{
return this.http.post(API_URL+URI, model)
.pipe(
catchError(this.handleError('create', model))
);
}
private handleError<T> (operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
console.error("default"+error); // log to console instead
var errors=error["error"];
var type=errors.errors;
this.log(`${operation} failed: ${JSON.stringify(errors.errors)}`);
return of(result as T);
};
}
private log(message: string) {
this.messageService.add('DataService: ' + message);
}
在组件内部,我正在调用这个创建方法..
onSubmit() {
this.loading = true;
this._dataService.create(this.model,companytype_url).subscribe(data => {
console.log("inside component data type-company"+JSON.stringify(data));
},
error=>{
var error_data=JSON.stringify(error);
console.log("inside component error type-company ->" + error_data)
}
);
this.submitted = true;
this.loading = false;
this.companytypeForm.reset();
}
我应该在组件中使用subscribe吗? 我需要一个通用的http类来处理所有的api请求。它是一个很大的应用程序,并且有很多组件。因为我是Angular的新手,我对调用http方法的不同方法感到困惑。
答案 0 :(得分:2)
我应该在组件中使用subscribe吗?
是。如果您没有订阅,则不会向服务器发送任何内容
我需要一个通用的http类来处理所有的api请求
HttpClient是什么。如果您的服务是完全通用的,它就不会为HttpClient提供的内容添加任何内容。使用实际提供更高级抽象的专用服务:具有类型化参数,转换必要的输入,使用适当的URL,返回类型对象,知道如何转换响应等等。
由于我是Angular的新手,我对调用http方法的不同方式感到困惑。
这就是Angular提供......文档的原因。例如,此HttpClient guide和此RxJS guide。阅读它们。