Một cách khác để xử lý các trường hợp như vậy là sử dụng formControl và đăng ký nó valueChanges
khi thành phần của bạn được khởi tạo, điều này sẽ cho phép bạn sử dụng các toán tử rxjs cho các yêu cầu nâng cao như thực hiện các yêu cầu http, áp dụng gỡ lỗi cho đến khi người dùng viết xong câu, lấy giá trị cuối cùng và bỏ qua trước đó, ...
import {Component, OnInit} from '@angular/core';
import { FormControl } from '@angular/forms';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
@Component({
selector: 'some-selector',
template: `
<input type="text" [formControl]="searchControl" placeholder="search">
`
})
export class SomeComponent implements OnInit {
private searchControl: FormControl;
private debounce: number = 400;
ngOnInit() {
this.searchControl = new FormControl('');
this.searchControl.valueChanges
.pipe(debounceTime(this.debounce), distinctUntilChanged())
.subscribe(query => {
console.log(query);
});
}
}