2015-12-02 8 views
18

Ich mag Mit Komma eine Liste von Elementen in meinem Template erstellen, durch Komma getrennt, aber ich mag nicht das letzte Element ein Komma haben:als Listentrennzeichen in Angular 2

one, two, three 

Wie bewerkstellige ich dies mit der Template-Syntax von Angular 2?

Antwort

48

mag ich Erics Antwort besser (sein Kommentar für eine Probe Plunker e):

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

Meine ursprüngliche Antwort war die optionale index im NgFor microsyntax zu verwenden:

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

Eine Alternative ist zu Verwenden Sie einfach CSS ::before Syntax, wie hier beschrieben: https://stackoverflow.com/a/31805688/215945

+4

Alternativ können Sie die Eigenschaft ['$ last'] (https://github.com/angular/angular/pull/3991) verwenden. Hier ist ein [Beispiel] (http://plnkr.co/edit/padYDezuRCTvl05yO7QX?p=preview) –

+0

Danke @EricMartinez, ich hatte das noch nicht gesehen. Ich werde meine Antwort aktualisieren. –

+2

Aktuelle Syntax: Verwenden Sie natürlich Let für die * ngFor, aber auch für die #isLast: '' – dae721

17

Ich denke, ein einfacher Ansatz ist

<span> {{items.join(", ")}} </span> 
+2

Ich verstehe nicht, warum dies nicht als die Lösung akzeptiert ... –

+0

Falls Sie jede Zeichenfolge mit einem Zeichen umgeben müssen, zum Beispiel die Anführungszeichen, können Sie verwenden: '" {{items.join ('","')}} "' – ShinDarth

+0

Es funktionierte nicht für mich, wenn ich diese Lösung in Kombination mit der ToString() -Methode meines benutzerdefinierten Objekts verwendet habe. Aber es ist in der Tat die kürzeste Lösung für primitive Typen. –