Berdasarkan pencarian di tutorial tur pahlawan sudut.io, saya telah membuat pencarian hewan sederhana menggunakan observasi. Semuanya berfungsi dengan baik, namun sekarang saya ingin menghapus nilai dalam pencarian, dan menghapus daftar hasil, ketika saya memilih hasil.
Saya telah membuat metode untuk menghapus nilai input saat mengklik tautan, berharap observasi akan diperbarui dan dihapus, sayangnya hal itu tidak terjadi, dan daftar drop-down tetap ada. Saya sudah mencoba menugaskan ulang yang dapat diamati, yang berfungsi, tetapi kemudian yang dapat diamati berhenti berlangganan, sesuatu yang tidak ingin saya lakukan.
Saya yakin ini adalah kasus dimana saya belum sepenuhnya memahami cara bekerja dengan observasi, jadi saya berharap kalian bisa membantu saya.
Terima kasih, ini kode saya.
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>