javascript - 如何在不同位置渲染指令内的内容

标签 javascript html angular typescript angular-directive

我想要一个组件指令来渲染放置在其选择器内的任何内容,以便在其 html 内的特定部分进行渲染。

页眉、页脚、主内容在本例中。

任何.html

<any-selector>
    <div>content to place</div>
</any-selector>

期望它呈现以下内容

任意选择器.html

<header><div>content to place</div></header>
<main><div>content to place</div></main>
<footer><div>content to place</div></footer>

尝试过 ng-content但它仅在第一次出现 <ng-content> 时呈现

有什么办法可以实现这一点吗?

最佳答案

因此,这是 ng-content 的预期行为,您可以将 [select] 指向特定的 ng-content 或您可以仅在第一次出现 ng-content 时进行渲染。

我尝试了一种对我有用的方法。 Here is the demo working code

<any-selector>
    <div #myProjection>content to place</div>
</any-selector>

然后在app-selector.HTML中你可以这样做:

<div id='border'>
    <h1>Hello Component</h1>
    <header><div #canvas></div></header>
    <footer><div #canvas></div></footer>
</div>

应用程序选择器.组件

  @ViewChildren("canvas") canvas: QueryList<ElementRef>;
  @ContentChild("myProjection") str : ElementRef;

  ngAfterViewInit() {
     this.canvas.forEach((div: ElementRef) => 
         div.nativeElement.insertAdjacentHTML('beforeend', this.str.nativeElement.innerHTML));
   }

关于javascript - 如何在不同位置渲染指令内的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60761677/

相关文章:

javascript - 如果未配置闪光灯,那么在自动捕获图像时应该出现一些错误消息,我该怎么办

javascript - 悬停时如何以某种方式突出显示表格单元格

javascript - firebase 使用 orderByChild() 和 equalTo() 检索数据

javascript - 调用Jquery函数-通过ajax加载内容

javascript - 比较两个输入字段

html - 使用 not() 排除部分

javascript - Angular2 和 simpleheat 插件

angular - 在 Angular2 中,使用继承还是注入(inject)依赖?

javascript - 是否有机会从 RxJs 'next' 中省略 'subscribe' 部分

ios - 使用 phonegap 在 ios 中调用 sharepoint webservice