前の質問hereでは、2つのメッセージの間で変更された場合にのみ日付を表示しようとしています。Angular2:* ngFor、AsyncPipe、およびインデックス
違いは、私は今、リアルタイムデータベース(Firebase)に接続されていますということですので、私は、データ・ソースをサブスクライブし、指標と* ngIfを通過する前に、非同期パイプを通してそれを渡す:
<div *ngFor='let message of (chat | async) ; let i = index'>
<button *ngIf="i == 0 || (message.timestamp | date: 'ddMMMMyyyy') != ((chat | async)[i-1].timestamp | date: 'ddMMMMyyyy')">
{{ message.timestamp | date:'ddMMM' }}
</button>
...
<!--More html elements below (omitted)-->
...
</div>
この私は最初のビューをロードする際によく働く私はchat
に新しいエントリをプッシュする場合は、しかし、私は次のエラーを取得する:
TypeError: Cannot read property '0' of null
たぶん私はどのように非同期パイプ作品あまりわかりませんが、ときに私お試しください{{ (chat | async).length }}
を返すと、意図したとおりに動作します。回避策/適切な練習に関する提案はありますか?
あなたはチェックしましたか?バグかもしれない。 –
@GünterZöchbauer短絡は、インデックス0のメッセージの前には何もないので、trueを返す必要があります。インデックス1で、 '[i-1]'は0と評価され、例外がスローされます。 – shinglesmingles
私はそれが意図されていることを知っていますが、実際に起こっているかどうかは疑いがあります。 –