У меня такая проблема: У меня есть поиск в компоненте "Таблица" (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;
}
Разместите свой контроллер и шаблон, чтобы люди могли вам помочь.
Я полагаю, что вы показываете все, что находится внутри вашей grupoExames, если это правильно, вы можете попробовать эту структуру
if (event.target.value.length > 1) {
do the filter
}
else {
this.getGrupoExames();
}
Возможно, еще одно более неоднозначное решение - создать кнопку для удаления фильтра и доступа ко всему контенту.
Надеюсь, это поможет вам!
Бруно, я думаю, ты на правильном пути. Вам нужно будет уволить этих наблюдателей при изменении значения формы. Это позволит вам сбросить значения. Рассмотрите возможность добавления тайм-аута между нажатиями клавиш и отправляйте запрос только после того, как пользователь перестанет печатать.