У меня есть компонент ниже, который в основном вызывает внешнюю службу API в ngOnInit
- это возвращает массив GIF в this.items
.
У меня есть функция applyGif
- как только пользователь нажимает наКогда он вызывает эту функцию и сбрасывает форму searchTerm
, проблема заключается в том, что каждый раз, когда я вызываю resetSearchBox
, чтобы очистить поле ввода текста, он запускает событие valueChanges
и снова выполняет gifpickerService.search
со строковым значением 'null'- Я не хочу, чтобы это когда-либо вызывалось, если оно не имеет значения - что я делаю неправильно?
Я хочу сбросить форму, но не вызывать search()
внутри ngOnInit
- что яне так?
export class GifpickerComponent implements OnInit {
public searchTerm : FormControl = new FormControl();
public items: any = [];
@Output() gifSelected: EventEmitter<any> = new EventEmitter<any>();
constructor(private gifpickerService: GifpickerService) {}
ngOnInit() {
this.searchTerm.valueChanges
.debounceTime(1000)
.subscribe(data => {
this.gifpickerService.search(data).subscribe(response =>{
this.items = response;
})
})
}
applyGif(gif): any {
let gifMedia = gif.media[0];
this.gifSelected.emit(gifMedia);
this.resetSearchBox();
}
toggleGifList(): void {
this.items = [];
}
resetSearchBox(): void {
this.searchTerm.reset();
}
}
/ * html компонент * /
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let item of items" [value]="item" class="gif-list-item">
<img [src]="item.media[0].tinygif.url" (click)="applyGif(item)" />
</mat-option>
</mat-autocomplete>