วิธีที่แตกต่างในการจัดการกรณีดังกล่าวคือการใช้formControlและสมัครสมาชิกvalueChanges
เมื่อองค์ประกอบของคุณเริ่มต้นซึ่งจะช่วยให้คุณใช้ตัวดำเนินการrxjsสำหรับความต้องการขั้นสูงเช่นดำเนินการตามคำขอ HTTP ใช้การ debounce จนกว่าผู้ใช้จะเขียนประโยคเสร็จ และละเว้นก่อนหน้า ...
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);
});
}
}