Angular 使用 RxJs switchMap 订阅提前输入
Angular typeahead with RxJs switchMap subscribe
使用Angular bootstrap Typeahead 插件显示颜色。但是我需要像在我使用的其他地方一样解决循环引用。我不能用 RxJs SwitchMap 运算符来实现。还有其他可能的解决方法吗?
(<any>window).resolveJsonReferences(this.colorService.searchColors(term))
使用 RxJs SwitchMap 提前输入
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.distinctUntilChanged()
.do(() => this.searching = true)
.switchMap(term =>
this.colorService.searchColors(term) // Json result needs circular reference resolver
.do(() => this.searchFailed = false)
.catch(() => {
this.searchFailed = true;
return Observable.of([]);
}))
.do(() => this.searching = false);
其他地方
return this.colorService.searchColors(term)
.subscribe(
res => {
this.colors= this.utilities.resolveJsonReferences(res);
},
err => {
});
只需 map
通过您的解析器的值。
.map((term) => this.utilities.resolveJsonReferences(term))
总计:
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.distinctUntilChanged()
.do(() => this.searching = true)
.switchMap(term =>
this.colorService.searchColors(term) // Json result needs circular reference resolver
.map((term) => this.utilities.resolveJsonReferences(term))
.do(() => this.searchFailed = false)
.catch(() => {
this.searchFailed = true;
return Observable.of([]);
}))
.do(() => this.searching = false);
使用Angular bootstrap Typeahead 插件显示颜色。但是我需要像在我使用的其他地方一样解决循环引用。我不能用 RxJs SwitchMap 运算符来实现。还有其他可能的解决方法吗?
(<any>window).resolveJsonReferences(this.colorService.searchColors(term))
使用 RxJs SwitchMap 提前输入
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.distinctUntilChanged()
.do(() => this.searching = true)
.switchMap(term =>
this.colorService.searchColors(term) // Json result needs circular reference resolver
.do(() => this.searchFailed = false)
.catch(() => {
this.searchFailed = true;
return Observable.of([]);
}))
.do(() => this.searching = false);
其他地方
return this.colorService.searchColors(term)
.subscribe(
res => {
this.colors= this.utilities.resolveJsonReferences(res);
},
err => {
});
只需 map
通过您的解析器的值。
.map((term) => this.utilities.resolveJsonReferences(term))
总计:
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.distinctUntilChanged()
.do(() => this.searching = true)
.switchMap(term =>
this.colorService.searchColors(term) // Json result needs circular reference resolver
.map((term) => this.utilities.resolveJsonReferences(term))
.do(() => this.searchFailed = false)
.catch(() => {
this.searchFailed = true;
return Observable.of([]);
}))
.do(() => this.searching = false);