66

テンプレートにコンマで区切られたアイテムのリストを作成したいのですが、最後のアイテムにコンマを入れたくありません:

one, two, three

Angular 2 のテンプレート構文でこれを達成するにはどうすればよいですか?

4

3 に答える 3

167

私はエリックの答えが好きです(サンプルのプランカーについては彼のコメントを参照してください):

<span *ngFor="let item of items; let isLast=last">
   {{item}}{{isLast ? '' : ', '}}
</span>

私の最初の答えはindexNgFor microsyntaxでオプションを使用することでした:

<span *ngFor="#item of items, #i=index">
   {{item}}{{i === items.length - 1 ? '' : ', '}}
</span>

別の方法として、 https::before ://stackoverflow.com/a/31805688/215945 で説明されているように、CSS 構文を使用するだけです。

于 2015-12-02T21:57:17.440 に答える
42

もっと簡単なアプローチは

<span> {{items.join(", ")}} </span>
于 2017-03-07T09:35:06.167 に答える
0

これを行う必要がありましたが、私の値は属性にあるため、マークされた回答は機能しませんでした。

誰かがこれが役立つと思うかもしれません:

パイプを使用しました。文字列を構築することもできましたが、パイプの方が読みやすいと感じました

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>
于 2020-06-19T09:50:42.663 に答える