Angular 2中所有HTTP调用的通用服务

时间:2017-06-20 13:18:12

标签: angular angular2-services

我正在开发一个Angular 2应用程序,其中我有一些服务(Angular 2服务),它通过HTTP调用与我的服务器端方法通信。我在组件中调用服务来获取数据并在视图上显示它们。这工作正常但我已经为单独的数据操作编写了单独的服务。例如,我有一个仪表板,我在其中加载一个任务列表,所以为此我在我的组件中有一个loadTask方法,如下所示 -

public loadTask() {

        console.log('Component : Dashboard Component - Method : loadTask');
        //Get the current user
        let currentUser = JSON.parse(localStorage.getItem('currentUser'));
        this.taskListBusy = this._dashboardService.getTaskList(currentUser.EmployeeId).subscribe(
            data => this.taskListItems = data,
            error => this._errorLoggerService.logError(error, 'Dashboard/TaskList Component'),
            () => console.log("Task List For User Id - " + this._userLoginService.getCurrentUserId() + "\n" + JSON.stringify(this.taskListItems)));
    }

此方法正在调用服务方法,即

this._dashboardService.getTaskList(currentUser.EmployeeId)

其中_dashboardService.getTaskList()是一种服务方法,如下所示 -

public getTaskList(userId: any): Observable<TaskListModel[]> {
        console.log('Service - DashboardService : Method - getTaskList : Params - ' + userId);
        let postData = "userId=" + userId;

        this._requestOptions = new RequestOptions({
            method: RequestMethod.Post,
            url: this._httpHelperService.apiUrl + 'Dashboard/getTaskListByUserId',
            headers: this._httpHelperService.contentTypeJson,
            body: JSON.stringify({ 'userId': userId })
        });

        console.log('Get Task List - POST Request Query : ' + JSON.stringify(this._requestOptions));
        return this._http.request(new Request(this._requestOptions)).map(this._httpHelperService.extractData).catch(this._httpHelperService.handleError);
    }

正如您所看到的,除了进行http调用以获取数据之外什么都不做。我想要的只是一个通用服务,它将执行我的所有HTTP调用。它应该是这样我将传递控制器名称,方法名称和参数,然后它应该进行http调用以获取数据。有没有办法可以做到这一点?

0 个答案:

没有答案