2016-09-13 9 views
1

ループを作成して1〜7のdivを表示しようとしています。角2 - 「第1」、「第2」、「第3」などを表示したい場合は* ngForを扱う方法は?

しかし、各divが最初の項目は1st、二2nd3rd第3等の

がどのように私はこのような何かを扱うことができると言うだろう<p> Pick your 1st photo </p>を、持っているのだろうか?

<div *ngFor="let item of items"> 
    <p>Pick your ___ photo</p> 
</div> 

おかげ

+0

なぜアイテムのプロパティとして表示するテキストを含めるだけではないのですか? – WiredPrairie

答えて

3

index*ngForとthエンordinalパイプと一以上-より-インデックス変換:

<div *ngFor="let item of items; let i = index"> 
    <p>Pick your {{ i + 1 | ordinal }} photo</p> 
</div> 

ordinalパイプ:

import { Pipe, PipeTransform } from '@angular/core'; 
@Pipe({name: 'ordinal'}) 
export class OrdinalPipe implements PipeTransform { 
    transform(int) { 
     const ones = +int % 10, tens = +int % 100 - ones; 
     return int + ["th","st","nd","rd"][ tens === 10 || ones > 3 ? 0 : ones ]; 
    } 
} 

@Brad's answerとコメント* ngFor indexに関する重要な情報を提供します。この答えは、数値を(具体的にはインデックスよりも1つ多い)適切な序数 - 接尾辞を含む文字列に変換するためのパイプを提供するというものである。 2"2nd"に変換してください。 indexは0ベースであり、序数は1ベースであるため、iはパイプの前にインクリメントされることに注意してください。

+1

私はすでに質問に答えていると感じているので私の答えを拡大するつもりはありませんが、おそらくパイプを使ってこの機能を実装する答えを広げることができます。 – Brad

+0

良い提案ができました。 –

2

*ngForこのことからhttps://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html

<div *ngFor="let item of items; let i = index;"> 
    <p>Pick your {{ i + 1 }} photo</p> 
</div> 

文書で説明したように、第一の表示方法を見つけ出すことができるはずですあなたがループにアクセスすることができindex変数を持っています第2、第3等

+0

ありがとうございます。私はその文書を読んだ。インデックスはどのように機能しますか?私のcomponent.tsに必要な変数ですか? – user1354934

+0

'index'変数は' ngFor'ディレクティブにあり、繰り返しごとにインクリメントされます。あなたは式を書くときにしかアクセスできません - 私の答えの 'let i = index;'部分に注意してください。これは変数 'i'を' index'の現在の値に設定します。あなたのテンプレートのループ。コンポーネントに何も定義する必要はありません。 – Brad

関連する問題