次のコンポーネントがあります。
class MyComponent {
public mode = 'v';
readonly modes = ['v', 'a', 'd'];
....
}
次に、ngFor
を使用して、modes
に保存されている現在のモードを除く、mode
のすべてのモードのボタンを表示します。私は次のコードを持っています:
<button *ngFor="let othermode of modes">
{{ othermode }}
</button>
常に2つのボタンを表示し、残りの2つのモードを含めたい。私はこれを試しました:
<button *ngFor="let othermode of modes.filter(elem => elem !== this.mode)">
{{ othermode }}
</button>
しかし、それは機能していません。私が見たすべての質問は、この機能のカスタムパイプを記述するために必要でしたが、値だけを使用して文字列の配列をフィルタリングする簡単な方法はありませんか?
使用できます:
<ng-container *ngFor="let othermode of modes">
<button *ngIf="othermode!=mode">
{{ othermode }}
</button>
</ng-container>
フィルター関数を使用してデータをフィルター処理します。
filterFunction(your_collection): any[] {
return your_collection.filter(i => i.field.value === filterKey);
}
そしてテンプレートで:
*ngFor="let value of filterFunction(datasource)"
または、existコンポーネントを使用します。スレッドを見る:
NgIfでng-templateを使用します。条件付きで配列を反復処理する場合。以下はサンプルコードです。ここで 作業バージョンを見つけることができます
<ng-template ngFor let-othermode [ngForOf]="modes">
<button *ngIf="othermode!=mode">
{{ othermode }}
</button>
</ng-template>