如何在特定的domNode上启动Angular组件?

时间:2017-02-28 15:39:10

标签: javascript angular dom

我真正想要的是

@Component {
    selector: myDomNode
    ...
}
class MyComponent {};

在某种程度上,我可以随时在任何domNode上启动MyComponent。理想情况下,它应该由构造函数(即new MyComponent(myDomNode);或类似的)完成。

在第一点上看到的是,选择器必须始终是字符串,据我所知,这里我们不能给出任何不同的对象。此外,装饰在包初始化时间内执行,同样不是很好。

目标是在一个庞大,复杂且绝对不是角度友好的Javascript应用程序中嵌入一个简单的角度小部件。

经过一些尝试后,我发现如果不深入挖掘角度核心可能并不容易。

我目前最好的想法是使用这样一个事实,即装饰器本质上是Javascript级别的函数,因此我可以调用一些像

Component({...selector: myDomNode...})(MyComponent)

但网上到处都缺少确切的语法。

也许我可以使用myDomNodeattr()提供随机生成的ID,然后将Component装饰器作为selector: '#' + id函数调用。但它看起来很脏,我认为还应该存在一种更有棱角的方式。这就是我的想法:

let domId:string=assets.rand128();
domNode.attr('id', domId);
MyCurrentComponent = Component({... selector: '#' + id, ...})(MyComponent);

除此之外,我认为这是一个非常简单的功能,因此这样一个复杂的框架应该真正使用它。

有可能吗?也许有一些解决方法或技巧可以达到同等效果?

0 个答案:

没有答案