我需要一些有关代码的帮助:我必须对对象列表进行过滤,并且必须使用可观察对象(练习仅包括前端部分),并且对象位于数据库中。 当我在搜索栏中插入一个字母后就编写了代码,该数组将被清空,并且仅保留最后一个字母(例如,插入C,在我插入E之后,在过滤器中仅保留E)
in TS:
Search(name:any):void{
this.arraycopy=this.mylist
})
this.arraycopy=this.mylist.filter(res =>{
return res.description.includes(name.key) ;
})
}
IN HTML:
<div class="row">
<div class="col-2" *ngFor="let object of arraycopy">
<div class="card">
<div class="card-block">
<p class="card-text">
<a class="breadcrumbLabelStyle" href="{{list.listCode}}" title="access to {{list.description}}">{{list.description}}
</a>
</p>
</div>
</div>
</div>
</div>
答案 0 :(得分:-1)
您确定要使用完整的搜索栏输入而不只是按下最后一个键来更新Observable吗?
您可能正在根据keypress事件更新它,该事件返回上次按下的键。
最新答案:
尝试一下:
搜索栏:
<input type="text" [ngModel]="searchInput" (keyup)="Search()">
在TS中:
public searchTerm = new BehaviorSubject('');
public searchInput: string;
constructor() {
this.searchTerm.subscribe((text: string) => {
this.arraycopy = this.mylist.filter(res => {
return res.description.includes(text);
});
});
}
public Search(): void {
this.searchTerm.next(this.searchInput);
}
这应该可以工作,但与此同时,您对Observables的使用也不是很好。