将param传递给服务

时间:2016-09-22 07:56:05

标签: angular

我正在构建我的api服务。我希望它是普遍的。如何在提供者的定义中定义apiUrl?

这是我的服务:

import {Injectable} from "@angular/core";
import {Http, Response} from "@angular/http";
import '/js/admin/rxjs-operators';
import {Observable} from "rxjs";
@Injectable()
export class ApiService {
    private apiUrl: string = 'http://www.system.local/api/';

    constructor(private http: Http, private apiUrl: string) {
    }

    get(url: string, params): Observable<Response> {
        let requestUrl: string = this.apiUrl + url + this.parseParams(params);
        return this.http.get(requestUrl)
            .map(response => response.json());
    }

    post(url: string, params): Observable<any> {
        let requestUrl: string = this.apiUrl + url;
        return this.http.post(requestUrl, params)
            .map(response => response.json());
    }
}

我尝试过服务提供商,但似乎deps必须是类:

import {ApiService} from "./api.service";
import {Http} from "@angular/http";
let apiServiceFactory = (http: Http, apiUrl: string)=> {
    return new ApiService(http, apiUrl);
};

export let apiServiceProvider = {
    provide: ApiService,
    useFactory: apiServiceFactory,
    deps: [Http, 'http://www.wp.pl']
};

并在模块中:     @NgModule({         提供者:[             apiServiceProvider         ]     })