angular - 如何在用户输入按键事件中调用多个请求?
问题描述
我正在尝试在文本框输入按键事件上调用 2 个 http 请求。
ngAfterViewInit() {
fromEvent(this.input.nativeElement, 'keyup')
return forkJoin(
this.playerService
.findPlayers(1, 'userName', this.input.nativeElement.value, 'asc', 0, 20),
this.messagesService.getConversations()
)
.pipe(
map(([first, second]) => {
return { first, second };
})
)
.subscribe({first, second} => this.players = first.players, this.conversations = second);
}
这是对单个请求正常工作的方法:
ngAfterViewInit() {
fromEvent(this.input.nativeElement, 'keyup')
.pipe(
startWith({}),
switchMap(() => {
return this.playerService
.findPlayers(1, 'userName', this.input.nativeElement.value, 'asc', 0, 20)
.map(data => {
return data.players;
});
})).subscribe(players => this.players = players);
}
解决方案
对于每个输入信号切换映射到两个组合请求:
ngAfterViewInit() {
fromEvent(this.input.nativeElement, 'keyup').pipe(
switchMap(() => forkJoin(
this.playerService.findPlayers(1, 'userName', this.input.nativeElement.value, 'asc', 0, 20),
this.messagesService.getConversations()
)),
map(([first, second]) => ({ first, second }))
).subscribe(({first, second}) => {
this.players = first.players;
this.conversations = second;
});
}
推荐阅读
- python - 如何使用python在Excel文件的每一页中获取行名?
- python - Django CreateView 未通过 ModelForm 从 3 个相关模型创建新用户
- php - 联系我们表单背后的功能,它是用 wordpress 中的站点来源插件构建的
- typescript - `Equals` 在打字稿中是如何工作的?
- xamarin.forms - 带有 Shell 的 Xamarin 表单:更改 MainPage
- web-development-server - 如何从另一个窗口刷新浏览器?
- github - 如何使用来自 Github 的 gitignored env 文件正确部署存储库?
- python - 无法在 Python 3.8.3 中使用 pip 安装 TensorFlow
- sqlite - Sqlite / 填充对现有行进行排名的新列
- python - 我想反复比较相同字符的第一列并计算相同字符的数量。(评分。)在 google colab