Проблемы с массивами в Angular 5

У меня такая проблема: У меня есть поиск в компоненте "Таблица" (PrimeNg). Этот поиск должен начинаться, когда я размещаю символ во входных данных. Поиск правильный, но когда я очищаю запись, значения не возвращаются. Эта строка в начале предназначена только для этой группы "this.groupExamples = this.Examples;" но, видимо, когда я меняю элементы массива, это влияет на другие.

  public getGrupoExames(){
    this.serviceExames.getGrupoExames()
      .subscribe((response)=> {
        this.grupoExames = response;
        this.grupoExamesAux = response;
      }, (erro)=> {
        console.info("Erro");
      });
  }

private filtarGrupoExames(event){
    let filtro: GrupoExame[] = [];
    this.grupoExames = this.grupoExamesAux.slice();
    for(let i = 0; i < this.grupoExames.length; i++) {
      let grupo = this.grupoExames[i];
      let listaExames = [];
      for(let j = 0; j < grupo.exames.length; j++){
        let exame = grupo.exames[j];
        if (exame.nome.toLowerCase().indexOf(event.toLowerCase()) == 0) {
          listaExames.push(exame);
        }
      }
      grupo.exames = listaExames;
      filtro.push(grupo);
    }
    this.grupoExames = filtro;
  }

Бруно, я думаю, ты на правильном пути. Вам нужно будет уволить этих наблюдателей при изменении значения формы. Это позволит вам сбросить значения. Рассмотрите возможность добавления тайм-аута между нажатиями клавиш и отправляйте запрос только после того, как пользователь перестанет печатать.

Rafael 10.09.2018 00:29

Разместите свой контроллер и шаблон, чтобы люди могли вам помочь.

Rafael 10.09.2018 00:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
35
1

Ответы 1

Я полагаю, что вы показываете все, что находится внутри вашей grupoExames, если это правильно, вы можете попробовать эту структуру

if (event.target.value.length > 1) {
  do the filter
 }
 else {
     this.getGrupoExames();
   }

Возможно, еще одно более неоднозначное решение - создать кнопку для удаления фильтра и доступа ко всему контенту.

Надеюсь, это поможет вам!

Другие вопросы по теме