繁体   English   中英

将服务注入另一个类-Angular2

[英]Injecting a service into another class - Angular2

我有一个名为ApiEndpoint的可注射服务。 我需要在另一个类中使用此服务,但是我遇到了问题。

该代码是这样的:

//apiEndpoint.ts
@Injectable()
export class ApiEndpoint {

  constructor(private _http: Http) {}

  createGroup() { this._http...) 
}

//group.ts

import {ApiEndpoint} from './apiEndpoint';

  export class Group {
    public name: string;

    constructor(){}

    save(){
       ApiEndpoint.createGroup();  <== ERROR
    }
  }

我们很少导入“ group.ts”并执行以下操作

let myGroup = new Group();
 myGroup.name = 'foo';
 myGroup.save();

我收到以下错误:

Property 'createGroup' does not exist on type 'typeof ApiEndpoint'.

我该如何解决?

createGroup()是一个实例方法,您正在尝试将其用作静态方法。 使用依赖注入:

export class Group {
    public name: string;

    constructor(private apiEndpoint; ApiEndpoint ){}

    save() {
       this.apiEndpoint.createGroup();
    }
}

@Injectable()
export class GroupFactory {
    constructor(private apiEndpoint: ApiEndpoint) {}

    createGroup() {
        return new Group(this.apiEndpoint);
    }
}

然后将GroupFactory注入需要创建组并使用的组件中

let myGroup = this.groupFactory.createGroup();
myGroup.name = 'foo';
myGroup.save();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM