Учитывая приведенный ниже сценарий:
//just a dummy data source for our list
import { healthModel } from './healthModel';
export const healthListAll: healthModel[] =
[
{
id: 1,
Name: 'Asparagus',
healthGroup: 'Vegetable',
isAvail: 1
},
{
id: 2,
Name: 'Banana',
healthGroup: 'Fruit',
isAvail: 0
},
{
id: 3,
Name: 'Pomegranate',
healthGroup: 'Fruit',
isAvail: 1
},
{
id: 2,
Name: 'Artichoke',
healthGroup: 'Vegetable',
isAvail: 0
}
]
по компоненту ts я умею healthList = healthListAll;
Таким образом, я могу получить общее количество компонентов html через
{{healthList.length}}
Однако есть ли способ получить только длину элементов, где
isAvail = 0 или через healthGroup? могу ли я сделать это на html-компоненте, чтобы он был чистым?
или это можно сделать только на компоненте ts?
Извинения. Совершенно новый для angular.
@CryingFreeman понял, спасибо, я нашел документацию и здесь (angular.io/api/ядро/канал). Однако мне, возможно, придется посмотреть учебник для этого.
Вы можете создать трубу настолько гибкой, насколько хотите, и она также должна быть тестируемой.
вот пример stackblitz.com/edit/custom-pipes-пример. фильтр - это просто Javascript, канал - это магия angular
Хорошо, спасибо, что указали на это. Сосредоточимся на решениях с трубами



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Шаблон не может этого сделать, поэтому вы можете применять только логику фильтрации, сортировки и т. д. в своем компоненте, после чего вы можете привязать данные к шаблону с помощью интерполяции.
Надеюсь, это поможет.
Чтобы получить длину элементов, где isAvail = 0 или healthGroup, вы должны сделать это в своем ts
var length=this.healthListAll.filter(x=>x.isAvil==0).length
var length=this.healthListAll.filter(x=>x.healthGroup=='Fruit').length
Понятно, что означает x в обоих синтаксисах?
x будет каждым элементом в массиве.
Если вы хотите использовать фильтр непосредственно в своем шаблоне, вам нужно создать канал и все. Найдите документацию по пользовательским пайпам на angular.io. В основном канал будет выполнять фильтр, а шаблон будет отображать только результат канала.