2016-09-23 9 views
0

私は問題に対処します。私はスーパークラスからクラスを動的にインスタンス化したい。 基本的に、私はこのクラスから継承するAbstractClassクラスといくつかのクラスを持っています。ここでAngular2/ionic2 - 動的クラスのインスタンス化

は、活字体の運動場での作業例です。

class AbstractGreeter { 
    static get(the_msg) { 
     let class_name = (<any>this).name; 
     // ... do other things here ! 
     var instance = Object.create(window[class_name].prototype); 
     instance.constructor.apply(instance, [the_msg]); 
     return instance; 
    } 
} 
class Greeter extends AbstractGreeter { 
    greeting: string; 
    constructor(message: string) { 
     super(); 
     this.greeting = message; 
    } 
    greet() { 
     return "Hello, " + this.greeting; 
    } 
} 

let second_greeter = Greeter.get("it's me"); 

let button = document.createElement('button'); 
button.textContent = "Say Hello"; 
button.onclick = function() { 
    alert(second_greeter.greet()); 
} 

document.body.appendChild(button); 

このコードは遊び場でうまく動作しますが、私はそれが私のionic2/angular2アプリケーションで動作させることはできません。

[クラス名]ウィンドウが定義されていないというエラーが発生します。私はハードコードされた文字列を入れようとしましたが、それは同じように動作していないようです。

これを修正する方法はありますか?

ありがとうございました!

ジュリアン

答えて

0

あなたがアプローチを以下試すことができます。

  • は、子クラスのコンストラクタに
  • 子クラスでこのクラスを注入インスタンス化親クラス
  • プロバイダとして
を親クラスを作成します。

また、これらのクラスをapp.module.tsにインポートして注入する必要があります。彼らはあなたのアプリケーション内で利用可能です。

http://mcgivery.com/understanding-ionic-2-imports/

関連する問題