2016-12-15 16 views
0

私はコンパイル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); 
     } 
    }); 
    } 
} 

以下の通りです。

答えて

0

HttpServiceからGenericを削除してみます。

HttpService replace HttpService<T> 

さらに、そのほうがHttpServiceを使用するほうがいいです。それをラップしないでください。

+0

genericサービスが必要なため、httpserviceからgenricを削除できません。 –

0
はこのようにあなたのサービスを変更し

:ここ

import {Injectable} from '@angular/core' 
import {HttpModule, Http,Response} from "@angular/http"; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

@Injectable() 
export class HttpService { 

    constructor(private http: Http) { 
    } 

    getUser(url: string):Observable<any> { 
     return this.http.get(url).map((res:Response) => { 
      return res.json(); 
     }); 
    } 
} 

punklrです:https://plnkr.co/edit/7T3Qiv0jfXiIWT0BPp0e?p=preview

ます。また、ここでサービスの例を見ることができます。 https://angular.io/docs/ts/latest/guide/server-communication.html#!%23http-client

関連する問題