Angular 2 模板组件
Angular 2 Template Component
你好,我想创建一个自定义对话框组件,我想以声明的方式插入内容,应该如下所示:
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>
这不起作用,我该怎么做?可能吗?
我认为要使 <content>
正常工作,您需要从默认的 ViewEncapsulation.Emulated
切换到 ViewEncapsulation.Native
(并在不支持它的浏览器上添加 web-components polyfill本机)或使用 <ng-content>
代替,它适用于所有视图封装模式。
我正确理解了你的问题(向另一个组件提供了一些内容),我认为你可以利用 ng-content
:
@Component({
selector: 'field',
template: `
<div>
<ng-content></ng-content>
</div>
`
})
export class FormFieldComponent {
(...)
}
并像这样使用组件:
<field>
<input [(ngModel)]="company.address.street"/>
</field>
希望对您有所帮助,
蒂埃里
你好,我想创建一个自定义对话框组件,我想以声明的方式插入内容,应该如下所示:
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>
这不起作用,我该怎么做?可能吗?
我认为要使 <content>
正常工作,您需要从默认的 ViewEncapsulation.Emulated
切换到 ViewEncapsulation.Native
(并在不支持它的浏览器上添加 web-components polyfill本机)或使用 <ng-content>
代替,它适用于所有视图封装模式。
我正确理解了你的问题(向另一个组件提供了一些内容),我认为你可以利用 ng-content
:
@Component({
selector: 'field',
template: `
<div>
<ng-content></ng-content>
</div>
`
})
export class FormFieldComponent {
(...)
}
并像这样使用组件:
<field>
<input [(ngModel)]="company.address.street"/>
</field>
希望对您有所帮助, 蒂埃里