AHEAD-OF-TIME COMPILATION を使用しました。コンパイル後、AOT フォルダーが正常に生成されますが、app.modulengfactory.ts ファイルで問題が発生すると、 Build:Generic type 'HttpService' requires 1 type argument(s) のようなエラーがスローされます。プロジェクトをビルドするとき
私の app.Module.ts ファイルは以下の通りです
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 { }
問題は、汎用クラスをパラメーターとして受け入れる httpservice にパラメーターを渡していないことだと思います。
私の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);
}
});
}
}
したがって、この問題を解決するにはどうすればよいか提案をお願いします。