фильтр не работает с таблицами материалов при подписке - PullRequest
0 голосов
/ 26 июня 2018

Я не могу отфильтровать данные таблицы при подписке на магазин в NGRX.

Я пробовал различные способы извлечения и отображения данных. Таблица данных загружается, как и ожидалось, но когда я пытаюсь отфильтровать данные, она просто отфильтровывает все.

из component.ts

 export class CheckedInTableComponent implements OnInit {
  private subscription: ISubscription;
  // checkedInUsers: UserEvent[] = [];
  dataSource: MatTableDataSource<UserEvent>;
  userEvents: UserEvent[] = [];

  constructor(private checkinService: CheckinService) { }

  displayedColumns = ['name', 'supplier', 'visiting', 'dept', 'purpose', 'checkedIn', 'accessExpires', 'options'];

  applyFilter(filterValue: string) {
    filterValue = filterValue.trim(); // Remove whitespace
    filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
    this.dataSource.filter = filterValue;

  }
  ngOnInit() {
    this.subscription = this.checkinService.setCheckedInUsers().subscribe(res => { this.dataSource = new MatTableDataSource<UserEvent>(res) });
  }

  ngOnDestroy() {
    this.subscription.unsubscribe();
  }

}

из service.ts

  setCheckedInUsers() {
    this.store.dispatch(new checkinActions.LoadCheckedin());
    return this.store.pipe(select(getEvents),map(res => {return this.checkedInUsers = res}))
  }

HTML

<mat-form-field>
    <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
</mat-form-field>

<table mat-table [dataSource]="dataSource" fxLayoutGap="1rem grid" fxFill>

    <!-- Name Column -->
    <ng-container matColumnDef="name">
        <th mat-header-cell *matHeaderCellDef> Name </th>
        <td mat-cell *matCellDef="let element">
            {{element.user.title}} {{element.user.firstName}} {{element.user.lastName}}
        </td>
    </ng-container>
...
...