Angular 2 模板组件

4

你好,我希望创建一个自定义对话框组件,并以声明方式插入它的内容,应该像这样:

app.action.dialog.component.ts:

@Component({
    selector: 'app-action-dialog',
    templateUrl: 'app/template/app.action.dialog.component.html'  
})
export class ActionDialog {

    showing: boolean;

    constructor() {
        this.showing = false;
    }

    show() {
        this.showing = true;
    }

    hide() {
        this.showing = false;
    }
}

app.action.dialog.component.html:

<div id="overlay" class="valign-wrapper" 
    *ngIf="showing" (click)="hide()">
    <div class="container valign">
        <div class="card">
            <div class="card-content">
                <content select="[content]"></content> 
            </div>
        </div>
    </div>
</div>

使用示例:

<app.action.dialog>
    <div content> example </div>
</app.action.dialog>

这不起作用,我该怎么做?有可能吗?

2个回答

9

我正确理解了你的问题(为另一个组件提供一些内容),我认为你可以利用ng-content

@Component({
  selector: 'field',
  template: `
    <div>
      <ng-content></ng-content>
    </div>
  `
})
export class FormFieldComponent {
  (...)
}

然后像这样使用组件:

<field>
  <input [(ngModel)]="company.address.street"/>
</field>

希望这对您有所帮助, Thierry


1
我认为要让<content>起作用,你需要从默认的ViewEncapsulation.Emulated切换到ViewEncapsulation.Native(并在不支持它的浏览器上添加Web组件填充),或者改用<ng-content>,后者适用于所有视图封装模式。

我接受Thierry的答案,因为他提供了代码示例。无论如何,感谢你的帮助兄弟:D - Marcos J.C Kichel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接