Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Возвращение данных с PipeTransform Angular2 (https://javascript.ru/forum/angular/70511-vozvrashhenie-dannykh-s-pipetransform-angular2.html)

CrazyBite 11.09.2017 16:27

Возвращение данных с PipeTransform Angular2
 
Всем привет.
Интересует возможность возвращения данных после pipe фильтра. Ситуация следующая: есть таблица юзеров, у каждого юзера есть чекбокс и свойство checked. Хочется сделать кнопку, которая может всем найденным пользователям сделать checked = true. А не всему массиву пользователей. Каким образом можно это реализовать на Angular 2?
На jquery можно было пройтись по элементам с помощью .each(), но не хочется.
Pipe фильтр
Шаблон таблицы
Функционал таблицы

CrazyBite 12.09.2017 09:10

Попробовал с Jquery сделать .prop('checked', true);
Чекбоксы он чекнул, но ngModel не поменял :( свойство checked осталось false.

destus 12.09.2017 09:21

CrazyBite,
https://github.com/CrazyBite/userman...mponent.ts#L92 ?

CrazyBite 12.09.2017 09:25

Цитата:

Сообщение от destus (Сообщение 464323)

Это чекает первоначальный массив users, а нужно что бы чекало только отфильтрованный (измененный с помощью transform).

destus 12.09.2017 09:40

CrazyBite,
Первое, что можно сделать, это вызывать твой фильтр не из HTML шаблона, а импортировать в компонент, создать инстанс этого фильтра и вручную вызывать transform. Ну то есть что-то типа

usertable.component.ts
import {PipieUsertableComponent} from 'pipe-usertable.component.ts'
export class UsertableComponent implements OnInit, OnChanges {
    ...
    filteredUsers: User[];
    ...
}
ngOnChanges() {
  this.filteredUsers = new PipieUsertableComponent().transform(this.users, /* другие параметры */);
}
check() {
    this.filteredUsers.forEach( user => user.checked = true);
}


и в шаблоне
<tr *ngFor="let user of filteredUsers; let num = index;">

CrazyBite 12.09.2017 10:02

Да, думаю сработает, спасибо большое!


Часовой пояс GMT +3, время: 16:02.