【发布时间】:2017-02-04 01:44:43
【问题描述】:
从 RC 5 开始,以下语法适用于 Angular 2 中的多槽嵌入
这是带有选择器statement-card的模板组件
<div class="statement-card bottom-right-shadow">
<div class="row">
<div class="col-xs-12">
<div class="statement-card-title">
<!-- title -->
<ng-content select="statement-card-title"></ng-content>
</div>
</div>
</div>
<div class="row statement-card-body">
<div class="col-md-4">
<!-- statment summary -->
<ng-content select="statement-card-summary"></ng-content>
</div>
<div class="col-md-4">
<!-- payment amount -->
<ng-content select="statement-card-addition"></ng-content>
</div>
<div class="col-md-4">
<!-- payment method -->
<ng-content select="statement-card-payment-method"></ng-content>
</div>
</div>
<div class="row statement-card-footer">
<div class="col-md-4 col-md-offset-8">
<ng-content select="statement-card-interactions"></ng-content>
</div>
</div>
</div>
这是用数据填充模板的组件之一
<statement-card>
<statement-card-title>
<div class="schedule-statement-title">Payment schedule</div>
</statement-card-title>
<statement-card-summary>
<h4 class="statement-card-section-title">Payment frequency:</h4>
<div>
{{frequency}}
</div>
<div>
Next payment: {{payment?.scheduledDate | date:'MMMM dd, yyyy'}}
</div>
</statement-card-summary>
<statement-card-addition>
<h4 class="statement-card-section-title">Payment amount:</h4>
<div class="addition-line"><span>Amount</span><span>{{payment?.amount}}</span></div>
<div class="addition-line"><span>Sales tax</span><span>{{payment?.salesTax}}</span></div>
<hr class="addition-seperator" />
<div class="addition-total"><span>Total</span><span>{{getPaymentTotal()}}</span></div>
</statement-card-addition>
<statement-card-payment-method>
<h4 class="statement-card-section-title">Payment method:</h4>
<img src="images/bank.png" width="48" height="48" class="payment-method-icon" />
<div class="payment-method-summary">
<div>Bank</div>
<div>Account ending in ••••••••••1234</div>
</div>
</statement-card-payment-method>
<statement-card-interactions>
<div class="row">
<div class="col-md-6">
<a href="#" class="pull-right">MAKE A PAYMENT</a>
</div>
<div class="col-md-6">
<a href="#" class="pull-right">VIEW PAYMENT SCHEDULE</a>
</div>
</div>
</statement-card-interactions>
</statement-card>
在 Angular 2 RC 5 及以下版本中,您可以在模板组件中指定带有 select 属性的 ng-content 标签,然后在特定组件中直接创建与 ng-content 标签中的 select 属性匹配的 html 标签,然后会将子 html 内容嵌入到 ng-content 标记中。
现在我已经升级到 Angular 2,它对所有的嵌入槽都抛出了这样的错误:
'statement-card-title' 不是已知元素: 1. 如果 'statement-card-title' 是一个 Angular 组件,那么验证它是这个模块的一部分。 2. 如果 'statement-card-title' 是 Web 组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到该组件的 '@NgModule.schema' 以禁止显示此消息。 (" [错误->] 付款时间表
我现在是否必须为所有的嵌入插槽制作一个单独的组件??如果不是,我该如何修复我的组件,以便角度识别这是多重嵌入?
【问题讨论】:
标签: angular