使用Angular 4服务的继承与注入

时间:2018-03-21 08:47:06

标签: angular typescript

我对Angular的世界有点新鲜。我目前正在使用Angular-4.4.6。 我的方案如下: 我有3个组件(例如C1,C2,C3),每个组件使用它们自己的服务(例如,S1,S2,S3分别),然后调用“http.get()”从休息后端获取数据。 我想知道的是,不是在三个服务中的每一个中注入“http:HttpClient”,我应该创建一个“RestService”类,其中包含所有其他调用,如get(),post(),put(),删除()然后:

  • 将我的基类扩展到我的3个服务中 订阅基类的这些方法调用,然后使用数据 取?

OR

  • 将具有泛型方法的'RestService'注入我的每个服务的构造函数中,然后通过订阅它们来使用这些服务?

这两种方法是否有任何性能影响?

1 个答案:

答案 0 :(得分:1)

我喜欢“基础服务”

export class ServiceModel<T>{
    type: string;
    url: string;
    ...
    constructor(private _http: HttpClient) {
    }
    list(): Observable<T[]> {
        return this._http.get<T[]>(this.url)
    }
    ...
}

然后在data1Service

export interface IData1
{
    id:number;
    desc:string;
    ...
}

@Injectable()
export class Data1Service extends ServiceModel<IData1> {
    type:string="data1";
    url:string="myurl/data1";

    constructor(http: HttpClient) {
        super(http)
    }
}

但如果这个答案解决了你的问题,我不知道:(