import {Pipe} from '@angular/core';
@Pipe({name: 'distinct'}) export default class {
tranform<T>(values: T[], keyOrKeySelector?: keyof T | ((x: T) => any): T[] {
const keySelector =
typeof keyOrKeySelector === 'function'
? keyOrKeySelector
: ((x: T) => JSON.stringify(x[keyOrKeySelector]));
const results = values.reduce((distinct, value) => ({
...distinct,
[keySelector(value)]: value
}), {});
return Object.values(results);
}
}
キーと
<div *ngFor="let item of data | distinct"
class="dropdown-menu"
aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">{{item.color}}</a>
</div>
(構造的な比較を行うためにJSON.stringify
を使用する)キーまたは機能使用することなく使用、突起と色
<div *ngFor="let item of data | distinct: 'color'"
class="dropdown-menu"
aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">{{item.color}}</a>
</div>
使用によって異なるアイテムを選択任意の基準で異なる項目を選択する
はあなたの中にある
<div *ngFor="let item of data | distinct: toId"
class="dropdown-menu"
aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">{{item.color}}</a>
</div>
がモデルを表示
@Component({}) export default class {
toId = (item: {id: number, name: "First", color: "Red"}) => ({item.id, item.color});
}
フィルターパイプが推奨されていません。 https://angular.io/guide/pipes#appendix-no-filterpipe-or-orderbypipe – omeralper
あなたのサンプル(Color ... so:Red、Blue、Pink)のサンプルでは、コードチャンクで再フォーマットする必要があります。 –