检查角度6中的异步管道数据

时间:2018-07-16 12:15:51

标签: angular angular6 angular-pipe

我设法建立了一个表单,可以在您键入文本时进行搜索并带回结果。

我主要在Angular 6中使用管道,可观测对象和地图。这是我的代码

为我服务

  searchName(name:string):Observable<SearchResult[]>{
    let headers = new Headers();
    headers.append('Content-Type','application/json');
    headers.append('Authorization',this.token);
    return this.http.get('http://localhost:3000/laptops/search?name='+name, {headers:headers})
    .pipe(
      .map(res => {
          return res.json().data.map(item => {
            return new SearchResult(
                item.id,
                item.name
            );
          });
        })
    );
  }

以及在我的组件中

  ngOnInit() {
    this.searchField = new FormControl();
    this.results = this.searchField.valueChanges.pipe(
      debounceTime(400)
      ,distinctUntilChanged()            
      ,tap( () => console.log('value ', this.searchField.value))
      ,switchMap( a => this.mapcmsService.searchName(a))
      ,tap( () => this.loading = false)
    )
  }

所以这可行,但是我想控制数据流。我想对数据数据进行拦截:

检查是否没有结果以显示消息。由于我直接将结果传递到this.results中,因此我想没有办法突然执行if。但是,如何检查空结果?我可以拥有节点服务器,我可以控制它返回诸如res.json({success:true, data:false, msg:'no results'});

之类的东西

检查表单的文本输入中是否没有值。再次,我在这里没有看到if选项,如果没有值,我也不想打数据库。

我该怎么办?

谢谢

0 个答案:

没有答案