在不使用路线的情况下使用对象的角度滤镜的问题(角度TS)

时间:2019-07-16 09:31:08

标签: arrays angular filter observable

我需要一些有关代码的帮助:我必须对对象列表进行过滤,并且必须使用可观察对象(练习仅包括前端部分),并且对象位于数据库中。     当我在搜索栏中插入一个字母后就编写了代码,该数组将被清空,并且仅保留最后一个字母(例如,插入C,在我插入E之后,在过滤器中仅保留E)

in TS:
Search(name:any):void{  

        this.arraycopy=this.mylist

        })
        this.arraycopy=this.mylist.filter(res =>{ 
            return res.description.includes(name.key) ; 
        })
 }

IN HTML:
<div class="row">
   <div class="col-2" *ngFor="let object of arraycopy">
        <div class="card">
           <div class="card-block">
               <p class="card-text">
                  <a class="breadcrumbLabelStyle" href="{{list.listCode}}" title="access to  {{list.description}}">{{list.description}}
            </a>
          </p>
        </div>
      </div>
   </div>       
 </div>

1 个答案:

答案 0 :(得分:-1)

您确定要使用完整的搜索栏输入而不只是按下最后一个键来更新Observable吗?

您可能正在根据keypress事件更新它,该事件返回上次按下的键。

最新答案:

尝试一下:

搜索栏:

<input type="text" [ngModel]="searchInput" (keyup)="Search()">

在TS中:

  public searchTerm = new BehaviorSubject('');
  public searchInput: string;

      constructor() {
          this.searchTerm.subscribe((text: string) => {
              this.arraycopy = this.mylist.filter(res => {
                  return res.description.includes(text);
              });
          });
       }

       public Search(): void {  
           this.searchTerm.next(this.searchInput);
       }

这应该可以工作,但与此同时,您对Observables的使用也不是很好。