Условно нанесите угловую трубу на ngFor

#angular #ngfor #angular-pipe #angular2-custom-pipes

#угловатый #нгфор #angular-pipe #angular2-пользовательские трубы

Вопрос:

У меня есть следующий код:

 <tr *ngFor="let user of users">
    <td>{{user.name}}</td>
    <td>{{user.surname}}</td>
    <td>{{user.age}}</td>
    <td>{{user.email}}</td>
    <td>{{user.username}}</td>
    <td>{{user.registrationDate}}</td>
</tr>
 

Мне нужно применить пользовательский канал для фильтрации пользователей, которые не активны.

 <tr *ngFor="let user of users | filterBy: 'active'">
 

Это работает.

Но я хочу, чтобы канал применялся условно, только если пользователи нажимают на заданную кнопку. Я имею в виду, что пользователи нажимают на «Показать только активных» и получают список, отфильтрованный только активными пользователями.

Возможно, я не могу сделать это, используя канал в HTML-коде, но я должен использовать его в компоненте, используя канал следующим образом:

 this.users = new FilterByPipe().transform(this.users, 'active');
 

Разве это не грязный способ, так как у меня должен быть резервный массив для восстановления предыдущих значений?

Есть какой-нибудь лучший способ?

Комментарии:

1. Передайте другой параметр, подобный boolean вашему пользовательскому каналу, и проверьте, является ли параметр true возвращать активных пользователей, в противном случае возвращать всех пользователей

2. Может быть, вы можете условно отобразить два <tr> элемента, один с каналом , а другой без, на основе значения, скажем showActive , в вашем TS?