Angular 2 在 3rd 方指令中使用自定义组件选择器

Posted

技术标签:

【中文标题】Angular 2 在 3rd 方指令中使用自定义组件选择器【英文标题】:Angular 2 use custom component selector in 3rd party directive 【发布时间】:2016-10-03 18:38:51 【问题描述】:

我正在使用ng2-bootsrap's accordion directive

使用以下语法可以正常处理普通 html

<accordion>
    <accordion-group heading="Heading 1">
        <div>Quick Search...</div>
    </accordion-group>
</accordion>

我想从我的一个组件中插入一个选择器,如下所示:

<accordion>
    <accordion-group heading="Heading 1">
        <quick-search></quick-search>
    </accordion-group>
</accordion>

当我添加我的组件时,解析器只是删除了选择器,并没有在其位置显示任何内容。如果手风琴是我创建的指令,我通常会将我的组件(QuickSearchComponent)添加到指令列表中,如下所示:

@Component(
   ...
   directives: [QuickSearchComponent]
   ...
)

但这是第 3 方指令。如何让指令识别或添加到@Component.directives注解中?

【问题讨论】:

【参考方案1】:
directives: [QuickSearchComponent]

在包含

的组件上是必需的
<accordion>
    <accordion-group heading="Heading 1">
        <quick-search></quick-search>
    </accordion-group>
</accordion>

并且在accordionaccordion-group 组件中不是必需的。

accordion-component 中需要的是一个 &lt;ng-content&gt; 标记,其中 &lt;quck-search&gt; 被嵌入到其中。

如果它适用于&lt;div&gt;Quick Search...&lt;/div&gt;,那么它也应该适用于&lt;quick-search&gt;&lt;/quick-search&gt;

问题是由其他原因引起的。

【讨论】:

以上是关于Angular 2 在 3rd 方指令中使用自定义组件选择器的主要内容,如果未能解决你的问题,请参考以下文章

从 Angular 服务访问 3rd 方 JS 功能

从 Angular/NodeJS/ExpressJS 向 3rd 方 URL 的 POST 请求

Angular 2 中自定义指令

angular的自定义指令---详解

如何在不重新加载页面的情况下从 FF Web 扩展内容脚本更改 3rd 方网站上的 Angular 应用程序路由/URL

Angular 自定义指令在 ng-repeat 中使用 if 条件