1
非同期パイプを使用して子コンポーネントにデータを渡しますが、データを "mimetype"の値でフィルタリングしたいとします。ただし、フィルタを追加すると、ストリームに追加された新しいオブジェクトは取得されません。例えば;以下は完全に動作します角度/ 2 |非同期ストリームをフィルタリングする
<asset-list [assets]="assets$ | async"></asset-list>
子コンポーネント内部私はリストを表示するために資産をループしています。ただし、フィルタパイプを追加すると、たとえば
<asset-list [assets]="assets$ | async | imageFilter"></asset-list>
ストリームの変更を取り上げなくなりました。私のパイプは次のようになります:
import { Injectable, Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'imageFilter'
})
@Injectable()
export class AssetImagesPipe implements PipeTransform {
transform(assets: any[]) {
var images = [];
for(let i in assets) {
if(assets[i].mimetype.substring(0,5) == 'image')
{
images.push(assets[i]);
}
}
return images;
}
}
何かアドバイスをいただければ幸いです。
ありがとう、素晴らしい答え。私はオプションの2つを使いました。なぜなら、不純なパイプが大きなオーバーヘッドを持つように見えるからです。 – prime
いくつかの繰り返し値に対して最大5回、他の方法で新しい配列を作成し、配列からその値を削除しますか?私はこの種のARRAYを持っています:["info.specificAllergy"、 "info.specificAllergy"、 "info.specificAllergy"、 "info.specificAllergy"、 "info.existingMedicalCondition"、 "info.existingMedicalCondition" "info.existingMedicalCondition"、 "info.existingMedicalCondition"、 "info.existingMedicalCondition"] –