我使用带有 observable 的异步管道在 Angular 中实现了我的搜索。我将 observable 分配给使用 switchmap 完成的搜索 observable。但它不起作用!我认为这与一个分配覆盖另一个有关。但是我需要在开始搜索之前显示一些数据(反正谁不会。)我试图通过先分配数据然后搜索来反转它,但是没有显示任何数据,它只在我开始输入时才有效。
所以我的问题是如何修复它,以便我可以拥有搜索功能并在开始时仍然显示一些数据。使用异步管道而不订阅组件
以及使其更清晰的场景>在组件初始化时,我想向服务器发出请求并获取初始数据显示它。并且还通过向服务器发出另一个请求,将我相同的可观察对象“分配”给用户键入要搜索的条件的输入。
任何帮助表示赞赏
类似的问题,但没有具体的答案和不推荐使用的 rxjs 运算符
Angular2 - 在初始化时使用 Switchmap 从服务中获取数据
queryField: FormControl;
customerOrdersObservable: Observable<NextCustomerOrdersPaginationModel>;
ngOnInit() {
this.customerOrdersObservable = this.queryField.valueChanges.pipe(
debounceTime(500),
distinctUntilChanged(),
switchMap((searchInput) => {
this.transformSearchInput(searchInput);
return this.customerOrderService.getSearchedCustomerOrders(this.page, this.pageSize, this.searchTerm);
}));
this.customerOrdersObservable = this.customerOrderService.getSearchedCustomerOrders(
this.page, this.pageSize, this.searchTerm);
}
编辑为
ngOnInit() {
this.customerOrdersObservable = this.queryField.valueChanges.pipe(
startWith(this.customerOrderService.getSearchedCustomerOrders(
this.page, this.pageSize, this.searchTerm)), > 'would have been great but its not possible (unless im wrong)'
debounceTime(500),
distinctUntilChanged(),
switchMap((searchInput) => {
this.transformSearchInput(searchInput);
return this.customerOrderService.getSearchedCustomerOrders(this.page, this.pageSize, this.searchTerm);
}));
}