【发布时间】:2022-01-21 04:05:20
【问题描述】:
我正在实现 concatMap 运算符。甚至在此之前,我尝试一个接一个地进行两个订阅,并且成功了。第一次订阅是针对表单的输入字段进行的,第二次订阅是针对 http 请求的。下面是代码:
// AfterViewInit implementation
// this.form is a formGroup with formControl city
ngAfterViewInit() {
this.form.valueChanges.pipe(
map (val=>val.city),
).subscribe(
val => {this.request(val)}
);
}
request(city){
this.httpClient.get(url, {params:{
...
}}).subscribe(
value => {
}, error => {}
);
}
上面的 sn-p 将在每次输入字段更新时进行 http 调用。我通过添加 concatMap 对 ngAfterViewInit 进行了如下修改:
ngAfterViewInit() {
this.form.valueChanges.pipe(
concatMap(val=> this.request(val.city)),
).subscribe();
}
现在,请求未按预期发出。当输入更改时,第一次请求只发出一次。永远不会为更新的输入字段发出第二个请求。我在这里做错了什么?
【问题讨论】: