Угловое событие «нажатие клавиши» не дает самое обновленное значение текстового поля - PullRequest
0 голосов
/ 02 июня 2018

У меня есть сценарий, в котором я хочу отправлять строку, присутствующую в поле ввода, при каждом нажатии клавиши на сервер, вызывая Http REST для извлечения совпадающих строк.Но это работает не так, как я ожидал, например, допустим, что текущее значение в поле ввода равно 'modul', если я введу символ 'e' после 'modul', я ожидаю, что значение, переданное методу searchDepartmentsWithName, будетбыть «модулем», но вместо этого он дает текущее значение «модуль», а не измененное значение «модуль», которое отправляется на сервер, и возвращаются неправильные совпадающие строки.Короче говоря, значение, переданное методу searchDepartmentsWithName, всегда является значением до изменения.Как мы можем решить это, или это даже правильный способ сделать это?

searchnox.component.html

<body>
      <input type="text" placeholder="enter department name here.." (keypress)="searchDepartmentsWithName($event.target.value)" class="ticketinginput" />
      <div *ngFor="let department of searchResults; let i = index">
      <p id="result" href="#" (click)="onClick(department)">{{ department.departmentName }}</p>
      </div>
</body>

searchbox.component.ts

searchDepartmentsWithName(departmentName: string) {
this.serverService.searchDepartment(departmentName).subscribe( (response) => {
    console.log(response);
  },
  (error) => console.log(error)
);
this.prepareSearchResults();
}

server.service.ts

searchDepartment(name: string) {
 this.departmentList = new Array();
const url = `http://localhost:8082/request/searchDepartmentsByName/${name}`;
return this.http.get(url).map(
  (response: Response) => {
    const data = response.json();
    for (const temp of data) {
      console.log(temp);
        const department: IDepartment = <IDepartment> temp;
        this.departmentList.push(department);
        console.log('pushing department' + department.departmentName);
    }
    this.departmentListEventEmitter.emit(this.departmentList);
    console.log(this.departmentList.length);
  }
);
}

1 Ответ

0 голосов
/ 02 июня 2018

Вы должны использовать keyup вместо нажатия

(keyup)="searchDepartmentsWithName($event.target.value)"
...