1

こんにちは、私はクラスはサービスを拡張し、角度2の新しいキーワードでインスタンス化できますか?

@Injectable() 
export class ParentService{ 

    constructor(private http:Http){} 

    get(){this.http.get(...)} 
} 

のようなサービスを持って、私はサービスを拡張するクラスを作成することができますか?例えば

export class SomeClass extends ParentService { 
    public name:string; 
    constructor(name:string, private http:Http){ 
    super(http); 
    this.name = name; 
    } 
} 

とアイデアがそれぞれの新しいインスタンスを、私はURLパスとして文字列を渡すと、一般的な関数を呼び出すために、そのインスタンスを使用することができるということです

export class Cmp{ 
    instance:any; 
    constructor(){ 
    this.instance = new SomeClass('InstanceOne', ??) 
    this.instance.get(); 
    } 
} 

のようなコンポーネント内にインスタンス化する新しいキーワードを使用します私のサービスから。ありがとう!

+0

私はあなたができると思います。あなたはそれを試しましたか?このアプローチに問題はありますか? – estus

答えて

1

DIにコンストラクタパラメータを渡したい場合は、インスタンス化をAngulars DIに委譲する必要があります。あなたは何ができるか

export class Cmp{ 
    instance:any; 
    constructor(http:Http){ 
    this.instance = new SomeClass('InstanceOne', http); 
    this.instance.get(); 
    } 
} 

あるまたは代わりに、あなたは、文字列を提供し、それが新しいSomeClassを作成するときにDIによって渡されたnameを取得するために@Inject('sometoken')を使用することができます。

+1

これは素晴らしい、ありがとう!新しいSomeClassをインスタンス化すると、実際にParentServiceのプロパティとメソッドを含む新しいjavescriptオブジェクトがインスタンス化されますか? –

関連する問題