将指令指定为另一个指令的参数(插件)

问题描述 投票:1回答:2

我有一个“主机”指令,我想在其中显示 一个“插件”指令 多个可能的“插件”指令中的一个(比如,plugin1,plugin2,plugin3等),我希望host指令的容器指定或更改要作为参数显示的插件指令。

如果没有“主机”指令知道任何事情,这可以在角度完成 它 它正在显示哪个指令?在某种程度上,它就像ui-router,我们保留子视图占位符,并动态提供视图。但我希望这种灵活性与指令。

例如:

<div>
  <host plugin="plugin1 plugin1-param-1 plugin1-param-2"></host>
</div> 
<div>
  <host plugin="plugin2 plugin2-param-1 plugin2-param-2"></host>
</div> 
angular angularjs-directive angular-directive
2个回答
0
投票

是。您可以将host指令注入plugin指令。

为了便于配置,您可以将输入命名为与指令的属性名称完全相同。

@Directive({selector: '[plugin]'})
class Plugin {
  @Input('plugin') config: any
  constructor(@Host() private host: HostCmp) {}
}

您现在可以通过HostCmp访问this.host实例,配置将在this.config

通过使用host[plugin]作为选择器,您可以进一步将插件的使用范围缩小到基于选择器的特定主机。


0
投票

我来自Java / .Net背景,所以我希望应用运行时“即插即用”模式。我认为翻译是我上述问题的答案。这是一个有用的链接:http://teropa.info/blog/2015/06/09/transclusion.html

© www.soinside.com 2019 - 2024. All rights reserved.