在Angular 5 http请求中使用observable有什么好处?

时间:2018-04-17 18:43:00

标签: angular rxjs angular5 rxjs5

我很担心在角度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方法的不同方法感到困惑。

1 个答案:

答案 0 :(得分:2)

  

我应该在组件中使用subscribe吗?

是。如果您没有订阅,则不会向服务器发送任何内容

  

我需要一个通用的http类来处理所有的api请求

HttpClient是什么。如果您的服务是完全通用的,它就不会为HttpClient提供的内容添加任何内容。使用实际提供更高级抽象的专用服务:具有类型化参数,转换必要的输入,使用适当的URL,返回类型对象,知道如何转换响应等等。

  

由于我是Angular的新手,我对调用http方法的不同方式感到困惑。

这就是Angular提供......文档的原因。例如,此HttpClient guide和此RxJS guide。阅读它们。