将param传递给服务

将param传递给服务

问题描述:

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

这里是我的服务:

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 ] })

+0

可能重复的[Angular 2“没有字符串提供程序!”](http://*.com/questions/39628768/angular-2-no-provider-for-string) –

+0

所以所有的配置值应该从服务并注入该服务? – piernik

+0

是的,看看这个examaple:https://angular.io/docs/ts/latest/api/core/index/OpaqueToken-class.html – martin

+0

好的谢谢 - 必须阅读越来越多:) – piernik