2016-10-07 3 views
-1

私はApiEndpointと呼ばれる注射可能なサービスを持っています。私は別のクラスの中でこのサービスを使用する必要がありますが、私は問題に直面しています。別のクラスにサービスを注入する - Angular2

のコードは次のようなものになる:私たちは 'group.ts' をインポートしてください

import {ApiEndpoint} from './apiEndpoint'; 

    export class Group { 
    public name: string; 

    constructor(){} 

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

いくつかの場所

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

    constructor(private _http: Http) {} 

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

//group.tsを以下

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

次のエラーが表示されます。

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

どうすれば解決できますか?

答えて

3

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(); 
を使用
関連する問題