Основываясь на поиске в туре учебника героев angular.io, я создал простой поиск животных с использованием наблюдаемого. Все работает нормально, однако теперь я хотел бы очистить значения в поиске и очистить список результатов при выборе результата.
Изображение поиска
Изображение поиска после клика
Я создал метод для очистки входного значения при нажатии на ссылку, ожидая, что наблюдаемое будет обновляться и очищаться, к сожалению, этого не происходит, и выпадающий список остается. Я пытался переназначить наблюдаемое, что работает, но затем наблюдаемое отписывается, что я не хочу делать.
Я уверен, что это тот случай, когда я еще не совсем понял, как работать с наблюдаемыми, поэтому надеюсь, что вы, ребята, сможете мне помочь.
Спасибо, вот мой код.
import { Component, OnInit } from '@angular/core';
import {Observable, Subject} from 'rxjs'
import {
debounceTime, distinctUntilChanged, switchMap
} from 'rxjs/operators';
import { AnimalService } from '../services/animal.service';
import { Animal } from '../models/animal';
@Component({
selector: 'app-animal-search',
templateUrl: './animal-search.component.html',
styleUrls: ['./animal-search.component.css']
})
export class AnimalSearchComponent implements OnInit {
animals$: Observable<Animal[]>;
private searchTerms = new Subject<string>();
private searchTerm: string;
constructor(private animalService: AnimalService) { }
search(term: string):void {
this.searchTerms.next(term);
}
ngOnInit() {
this.animals$ = this.searchTerms.pipe(
debounceTime(300),
distinctUntilChanged(),
switchMap((term: string) => this.animalService.searchAnimals(term)),
);
this.animals$.subscribe( )
}
clearSearch()
{
//PART THAT ISNT WORKING
this.searchTerm = "";
this.searchTerms = new Subject<string>();
}
}
<div id="search-component" class="search-component-container">
<input #searchBox id="search-box" [(ngModel)]="searchTerm" (keyup)="search(searchBox.value)" class="search-component-input" />
<ul class="search-result">
<li *ngFor="let animal of animals$ | async" >
<a routerLink="/animal/{{animal.id}}" (click)="clearSearch()">
{{animal.Name}}
</a>
</li>
</ul>
</div>