首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可观测永不触发的角switchMap

可观测永不触发的角switchMap
EN

Stack Overflow用户
提问于 2017-07-26 09:37:39
回答 1查看 717关注 0票数 0

我想实现一个搜索组件,如角教程。

问题:

search方法触发并修改searchTerms: Subject<string>,但switchMap从不触发。

代码:

进口

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';

import { SearchService } from "./search.service";

import { Observable }        from 'rxjs/Observable';
import { Subject }           from 'rxjs/Subject';

// Observable class extensions
import 'rxjs/add/observable/of';

// Observable operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';

import {Suggest} from "./suggest";

解码器

代码语言:javascript
复制
@Component({
  selector: 'search-engine',
  templateUrl: 'search-engine.component.html'
})

组件

代码语言:javascript
复制
export class SearchEngineComponent implements OnInit {

  suggestions: Observable<Suggest[]>;
  private searchTerms = new Subject<string>();

  constructor(private searchService: SearchService) {  }

  ngOnInit(): void {
    this.suggestions = this.searchTerms
      .debounceTime(300)
      .distinctUntilChanged()
      .switchMap(term => {
        console.log(term);
        return Observable.of<Suggest[]>([]);
      })
      .catch(error => {
        console.log(error);
        return Observable.of<Suggest[]>([]);
      });
  }

  search(term: string): void {
    this.searchTerms.next(term);
  }
}

代码语言:javascript
复制
<input #searchBox id="search-box" (keyup)="search(searchBox.value)">
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-26 09:46:00

你必须订阅可观察到的,如果你不订阅,什么都不会发生。

编辑:

还有一种情况是,您可以通过async管道在视图中声明和观察并隐式订阅,这就是这里发生的情况:

代码语言:javascript
复制
<div id="search-component">
  <h4>Hero Search</h4>
  <input #searchBox id="search-box" (keyup)="search(searchBox.value)" />
  <div>
    <div *ngFor="let hero of heroes | async"
         (click)="gotoDetail(hero)" class="search-result" >
      {{hero.name}}
    </div>
  </div>
</div>

更多关于async管道这里的信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45323073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档