【发布时间】:2016-03-07 08:24:54
【问题描述】:
我想在我的模板中创建一个项目列表,用逗号分隔,但我不希望最后一个项目有逗号:
one, two, three
如何使用 Angular 2 的模板语法来实现这一点?
【问题讨论】:
我想在我的模板中创建一个项目列表,用逗号分隔,但我不希望最后一个项目有逗号:
one, two, three
如何使用 Angular 2 的模板语法来实现这一点?
【问题讨论】:
这对我有用:
<span *ngFor="let item of items; let isLast=last">
{{item}}{{isLast ? '' : ', '}}
</span>
【讨论】:
我刚需要这样做,但我的值在一个属性中,所以标记的答案不起作用。
有人可能会觉得这很有帮助:
我用了一根管子,我本来可以把琴弦搭起来的,但我觉得一根管子会更易读
CLI
ng g p Delimiter
管道
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'delimiter'
})
export class DelimiterPipe implements PipeTransform {
transform(value: string, delimiter: string, isLast: boolean) {
return !isLast ? value + delimiter : value;
}
}
查看
<div ngFor="let item of items; let isLast=last"
[innerHtml]="item | delimiter:', ':isLast">
</div>
我的视图中需要一些 html,因此我需要使用该属性,例如
<div ngFor="let item of items; let isLast=last"
[innerHtml]="item | safeHtml | delimiter:', ':isLast">
</div>
【讨论】:
我认为更简单的方法是
<span> {{items.join(", ")}} </span>
【讨论】:
<span> "{{ items.join('", "') }}" </span>
[{amount: 1, currency: 'USD'}, {amount: 2, currency: 'GBP'}] 到 $1, £2?
{{ }} 内使用管道。
test: string[]= ['apple', 'banna', 'mango', 'orange', 'pear']; span *ngFor="let fruit of test">{{test.join(", ")}}</span> 产生:苹果,版纳,芒果,橙,梨,版纳,芒果,橙,梨,版纳,芒果,橙,梨,版纳, 芒果, 橙子, 梨子, 版纳, 芒果, 橙子, 梨L
我更喜欢 Eric 的回答(请参阅他的评论以获取示例 Plunker):
<span *ngFor="let item of items; let isLast=last">
{{item}}{{isLast ? '' : ', '}}
</span>
我最初的答案是在NgFor microsyntax 中使用可选的index:
<span *ngFor="#item of items, #i=index">
{{item}}{{i === items.length - 1 ? '' : ', '}}
</span>
另一种方法是仅使用 CSS ::before 语法,如下所述:https://stackoverflow.com/a/31805688/215945