Rxjs ngx选择下拉列表如何包括去BounceTime?
我需要动态填充我的Rxjs ngx选择下拉列表如何包括去BounceTime?,rxjs,angular6,ngx-select-dropdown,Rxjs,Angular6,Ngx Select Dropdown,我需要动态填充我的[options]数组,一旦用户完成键入,我需要进行API调用并获取我的选项列表 为了避免多个API调用,我想使用rxjsdebounceTime(1000) 有没有办法使用去BounceTime?或者还有其他推荐的选项吗?您可以使用缓冲区和api调用而不是ajax来使用此技巧 import { fromEvent, timer } from 'rxjs'; import { debounceTime, map, buffer, switchMap } from 'rxjs/o
[options]
数组,一旦用户完成键入,我需要进行API调用并获取我的选项列表
为了避免多个API调用,我想使用rxjsdebounceTime(1000)代码>
有没有办法使用去BounceTime?或者还有其他推荐的选项吗?您可以使用缓冲区和api调用而不是ajax来使用此技巧
import { fromEvent, timer } from 'rxjs';
import { debounceTime, map, buffer, switchMap } from 'rxjs/operators';
let input = document.getElementById('example');
let input$ = fromEvent(input, 'keyup');
let breakWhen$ = timer(1000);
let debounceBreak$ = input$.pipe(
debounceTime( 2000 )
);
let stream$ = input$.pipe(
map( ev => ev.key),
buffer(debounceBreak$),
switchMap((allTypedKeys) => {
// do ajax
console.log('Everything that happened during 2 sec', allTypedKeys)
return of('ajax based on ' + input.value);
});
);
stream$.subscribe((data) => console.log( 'values',data ));
正如Navruzbek提到的,“ngx mat选择搜索”可用于服务器端下拉搜索
但是,如果您想使用当前库并将debounceTime添加到其中,解决方法是使用主题。如
对我有效的解决方案:
searchTextChanged=新主题();
//在subscribvbe函数中进行服务器端调用
恩戈尼尼特(){
this.searchTextChanged.pipe(debounceTime(1000),distinctUntilChanged()).subscribe((值)=>this.outerValuedChanged(值));
}
addressSearchChanged(searchText:string){
如果(searchText.length>=3){
this.searchTextChanged.next(searchText);
}
}
//虚拟函数
outerValuedChanged(值:字符串){
console.log('value:',value);
返回“测试”;
}
谢谢您的回答。但我面临的问题不是输入字段,而是使用ngx选择下拉列表。我试图做一些与此非常类似的事情,但在我对其进行去抖动后,一旦更改事件,当我尝试映射输入时,它总是未定义的。使用ngx-mat-select-search()我认为这将解决您的问题这是一个极好的解决方案。这个库提供的服务器端搜索是完美的。但遗憾的是,由于它需要角度/材质,UI完全混乱,无法使用。因此,我不能认为这是正确的答案。但我会投这个票,肯定会帮助别人:)