@zachfischer

Как правильно настроить фильтр вывода информации по дате для определенного пользователя?

У меня есть два фильтра и они работают не совсем так как должны. Во-первых, после того как из списка был выбран определенный пользователь в заметки выводится вся информация по этому пользователю за все даты хотя установлена определенная дата на которой не должно выводится ничего так-как там пусто. А во-вторых, если я начинаю менять дату в select то начинает выводится вся информация по всем пользователям хотя изначально был выбран определенный пользователь. Ниже я привел код этих фильтров. Как я могу это исправить? Подскажите пожалуйста.
selectedUser = null;
  users: Array<User>;
  notes: Array<Note>;
  years: Array<Year>;
  filteredNotes = [];

// Фильтр информации по выбранному пользователю
SelectedUser(userId) {
  this.selectedUser = this.users.find(el => {
    return el.user_id === userId
  });
  this.filteredNotes = this.notes.filter((note) => note.n_users_id == this.selectedUser.user_id);
}

//Фильтр информации по выбору даты из списка

onYearSelection(year){
    this.filteredNotes = []
    this.filteredNotes = this.notes.filter(note => note.years  == year);
}


То есть, как я могу объединить эти операции. Чтобы я выбрал пользователя и дату, которая необходима мне, и отобразил всю доступную информацию об этом пользователе по выбранной дате.
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
StivinKing
@StivinKing
А как вы хотели, если после выбора пользователя и выбора года вы фильтруете список только по одной из сущностей?
Напишите отдельный метод, который будет фильтровать, что-то вроде:
public onSelectedUser(userId: number) {
    this.selectedUser = userId;
    this._filtered(this.selectedUser, this.selectedYear);
  }

  public onSelectedYear(year: number): void {
    this.selectedYear = year;
    this._filtered(this.selectedUser, this.selectedYear);
  }

  private _filtered(userId: number, year: number): void {
    let filteredNotes = this.notes;
    if (userId) {
      filteredNotes = filteredNotes.filter(note => note.user_id === userId);
    }
    if (year) {
      filteredNotes = filteredNotes.filter(note => note.year === year);
    }
    this.filteredNotes = filteredNotes;
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы