Angular2 / ionic2 - 动态类实例化

时间:2016-09-23 10:17:42

标签: angular typescript ionic2

我遇到了问题。我想动态地从超类中实现一个类。 基本上,我有一个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]未定义。我试图把硬编码的字符串,但它似乎没有相同的工作方式。

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

谢谢!

儒略

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

  • 将父类创建为提供者
  • 在子类中注入此类
  • 在子类构造函数中实例化父类

您还需要将这些类导入并注入app.module.ts,以便它们在您的应用程序中可用。

  

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