Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 将观察值数组转换为结果的可观察值_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 将观察值数组转换为结果的可观察值

Angular 将观察值数组转换为结果的可观察值,angular,typescript,rxjs,Angular,Typescript,Rxjs,下面的代码正在运行。它的目的是将返回匹配项的搜索结果转换为每个匹配项的详细信息 也许有一种更好的方法来写这篇文章: fromEvent(this.searchInput.nativeElement, 'input').pipe( debounceTime(500), ).subscribe(async _ => { const results = await this.database.search(this.searchText); c

下面的代码正在运行。它的目的是将返回匹配项的搜索结果转换为每个匹配项的详细信息

也许有一种更好的方法来写这篇文章:

    fromEvent(this.searchInput.nativeElement, 'input').pipe(
      debounceTime(500),
    ).subscribe(async _ => {
      const results = await this.database.search(this.searchText);
      const arrayOfobservables = combineLatest(results.map(result => this.database.getDetails(result.objectID)));
      this.searchResults$.next(arrayOfobservables)
    });

    this.details$ = this.searchResults$.pipe(
      switchMap(val => val)
    )
我正在努力的部分是将可观察的数组转换成我可以在UI中显示的可观察数组


尤其是
switchMap(val=>val)
在我看来非常奇怪。关于如何使此代码更干净,您有什么想法吗?

您应该能够
切换到承诺:

尝试:


这段视频也可能有帮助。它涵盖了高阶观测值的用途和使用,如开关图:
this.details$ = fromEvent(this.searchInput.nativeElement, 'input').pipe(
      debounceTime(500),
      switchMap(_ => this.database.search(this.searchText)),
      switchMap(results => combineLatest(results.map(result => this.database.getDetails(result.objectID)))),
      tap(_ => { console.log(_) }), // see what you get here, it should hopefully be an array
    );