2016-09-23 40 views
0

我应对了一个问题。我想从它的超类动态实例化一个类。 基本上,我有一个AbstractClass和几个继承自这个类的类。Angular2/ionic2 - 动态类instanciation

这里是打字稿游乐场的工作例如:

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应用程序。

错误在于窗口[class_name]未定义。我试图把硬编码的字符串,但它似乎不以同样的方式工作。

有没有办法解决这个问题?

谢谢!

朱利安

回答