首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角2模板元件

角2模板元件
EN

Stack Overflow用户
提问于 2016-01-22 16:04:40
回答 2查看 2K关注 0票数 4

你好,我想要创建一个自定义对话框组件,我想以声明的方式插入它的内容,应该如下所示:

app.action.dialog.component.ts:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
<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>

用法示例:

代码语言:javascript
复制
<app.action.dialog>
    <div content> example </div>
</app.action.dialog>

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-22 16:08:04

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

代码语言:javascript
复制
@Component({
  selector: 'field',
  template: `
    <div>
      <ng-content></ng-content>
    </div>
  `
})
export class FormFieldComponent {
  (...)
}

然后像这样使用组件:

代码语言:javascript
复制
<field>
  <input [(ngModel)]="company.address.street"/>
</field>

希望这能让你高兴,蒂埃里

票数 9
EN

Stack Overflow用户

发布于 2016-01-22 16:06:45

我认为,要使<content>工作,您需要从默认的ViewEncapsulation.Emulated切换到ViewEncapsulation.Native (并在不支持它的浏览器上添加web组件填充),或者使用<ng-content>,这在所有视图封装模式下都是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34950950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档