私はコンパイルAOTフォルダがsuceessfully生成された後、事前コンパイラ、 を使用しますが、app.modulengfactory.tsファイルに問題がいる、それは ビルドのようなエラーがスローされます:ジェネリック型 ' HttpService 'には1つの型引数が必要です。私は、問題は私がパラメータとしてジェネリッククラスを受け入れるのHTTPServiceでパラメータを渡されていないことだと思います事前コンパイラの問題
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { HttpModule, XHRBackend } from "@angular/http";
import { routing } from "./app.routes";
import { HttpService } from "./http.service";
import { LoginService } from "./login.service";
import { LoaderService } from "./shared/loader.service";
import { SharedModule } from "./shared/shared.module";
import { MaterialModule } from '@angular/material';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule,
HttpModule,
routing,
MaterialModule,
SharedModule
],
bootstrap: [AppComponent],
providers: [HttpService,LoginService, LoaderService],
})
export class AppModule { }
以下のよう私はプロジェクト
マイapp.Module.tsファイルを構築しています。
私のHTTPサービスのは、どのように私はこの問題を解決することができます任意の提案をお願いし
import {Http, Headers, RequestOptions, Response} from "@angular/http";
import {Injectable} from "@angular/core";
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/Rx';
@Injectable()
export class HttpService<T> {
constructor(private http: Http) {
}
get(url: string) {
return this.intercept(this.http.get(url).map(res => res.json()));
}
post(url: string, body: T) {
let jsonBody = JSON.stringify(body);
let headers = new Headers({ 'Content-Type': 'application/json;charset=utf-8' });
let options = new RequestOptions({ headers: headers });
return this.intercept(this.http.post(url, jsonBody, options).map(res => res.json()));
}
put(url: string, body: T) {
let jsonBody = JSON.stringify(body);
let headers = new Headers({ 'Content-Type': 'application/json; charset=utf-8' });
let options = new RequestOptions({ headers: headers });
return this.intercept(this.http.put(url, jsonBody, options).map(res => res.json()));
}
delete(url: string) {
return this.intercept(this.http.delete(url).map(res => res.json()));
}
intercept(observable: Observable<Response>) {
return observable.catch((err, source) => {
if (err.status === 401) {
location.href = "/Login";
}
else if (err.status === 500) {
return Observable.throw(err);
}
else {
return Observable.throw(err);
}
});
}
}
以下の通りです。
genericサービスが必要なため、httpserviceからgenricを削除できません。 –