在组件标记

时间:2017-02-20 22:18:31

标签: angular shadow-dom

渲染组件时,忽略其中的内容,例如:

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template: '<div>{{title}}</div>',
})
export class AppComponent {
  title = 'app works!';
}

使用它像:

<app-root>Ignored content</app-root>

渲染:

<div>app works!</div>

但是看看PrimeNg对话框,他们使用这样的组件:

<p-dialog [(visible)]="display">
    <p-header>
        Header content here
    </p-header>
    Content
    <p-footer>
        Footer content here
   </p-footer>
</p-dialog>

由于Header content hereContentFooter content here位于组件内部,为什么它们不被忽略,我怎样才能实现此目标?

1 个答案:

答案 0 :(得分:63)

<ng-content></ng-content>添加到应投影内容的组件模板中:

@Component({
  selector: 'app-root',
  template: '<div>{{title}}</div>
             <br>
             <ng-content></ng-content>',
})
export class AppComponent {
  title = 'app works!';
}

要投射的内容:

<app-root>This is projected content!</app-root>

输出将是:

app works!
This is projected content!

以下是关于角度内容投影(Angular 1 Transclusion)的精彩文章:Transclusion in Angular 2 with ng-content