我遇到了问题。我想动态地从超类中实现一个类。 基本上,我有一个AbstractClass和几个继承自这个类的类。
以下是Typescript playground中的一个工作示例:
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]未定义。我试图把硬编码的字符串,但它似乎没有相同的工作方式。
有没有办法解决这个问题?
谢谢!
儒略
答案 0 :(得分:0)
您可以尝试以下方法:
您还需要将这些类导入并注入app.module.ts,以便它们在您的应用程序中可用。