在下面的 plunk 中,当您单击 Select Market 时,Observable 将填充一组数据。第一项以黄色突出显示,因为它的属性设置为选中。当焦点位于输入框时,您可以在列表中向下箭头。问题是 BehaviorSubject 每次都在触发并从服务器获取数据列表。如何在每次不触发 searchTerms BehaviorSubject 的情况下修改选定的属性?market-search.component.ts 文件中的方法 searchInputArrowKeyPressed 是处理箭头键的地方。
public searchInputArrowKeyPressed(event): void {
this.markets = this.markets
.map((markets: Market[]) => {
for(let market of markets) {
if(market.selected) {
if(event === 'down' && markets.indexOf(market) < markets.length) {
markets[markets.indexOf(market) + 1].selected = true;
}
if(event === 'up' && markets.indexOf(market) > 0) {
markets[markets.indexOf(market) - 1].selected = true;
}
market.selected = false;
return markets;
}
}
});
}
https://plnkr.co/edit/TBYb5QBau9Vmz8PqQpCl?p=preview
提前感谢您的任何帮助!