1
我有這樣的服務:錯誤:無效的供應商爲NgModule「的AppModule」 - 唯一供應商和類型的實例被允許
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import { BaseUrl } from "../config/base-url.config";
enum HttpMethod {
get,
post,
patch,
put
}
@Injectable()
export class AdminHttpService<T> {
baseUrl: string;
constructor(private _http: Http, private _baseUrl: BaseUrl) {
this.baseUrl = _baseUrl.getHttpBaseUrl();
}
getCollection(relativeUrl: string): Observable<T[]>;
getCollection(relativeUrl: string, options: RequestOptions): Observable<T[]>;
getCollection(relativeUrl: string, options?: RequestOptions): Observable<T[]> {
return this.xhr(relativeUrl, HttpMethod.get, options);
}
get(relativeUrl: string): Observable<T>;
get(relativeUrl: string, options: RequestOptions): Observable<T>;
get(relativeUrl: string, options?: RequestOptions): Observable<T> {
return this.xhr(relativeUrl, HttpMethod.get, options);
}
getJson(path): Observable<T> {
return this._http.get(path)
.map((resp: Response) => resp.json())
.catch((error: any) => Observable.throw(error.json().error || 'Something went wrong!'));
}
create(relativeUrl: string, data: any, options?: RequestOptions): Observable<T> {
return this.xhr(relativeUrl, HttpMethod.post, data, options);
}
private xhr(relativeUrl: string, httpMethod: HttpMethod, requestBody?: any, options?: RequestOptions): any {
var requestUrl: string = this.baseUrl + relativeUrl;
if (!options) {
options = new RequestOptions({
withCredentials: true
});
}
switch (httpMethod) {
case HttpMethod.get:
return this._http.get(requestUrl, options)
.map((resp: Response) => resp.json())
.catch((error: any) => Observable.throw(error.json().error || 'Something went wrong!'));
case HttpMethod.post:
return this._http.post(requestUrl, requestBody, options)
.map((resp: Response) => resp.json())
.catch((error: any) => Observable.throw(error.json().error || 'Something went wrong!'));
}
}
}
加入此服務的AppModule的供應商名單後,我收到以下錯誤:
Error: Invalid provider for the NgModule 'AppModule' - only instances of Provider and Type are allowed, got: [EventsService, MenuService, BaseUrl, ?undefined?] at SyntaxError.ZoneAwareError
的AppModule是這樣的:
,
providers: [
EventsService,
MenuService,
BaseUrl,
AdminHttpService
],
bootstrap: [AppComponent]
})
export class AppModule { }