javascript - 以 Angular 6 过滤数据

标签 javascript angular

我是 Angular 6 的新成员。我目前正在从事 Angular 6 项目。我遇到了需要归档数据的情况,但我无法保留原始对象。这是代码:

    this.loginService.categoryType$.subscribe((data) => {
     for(var i=0; i<this.listPosts.length; i++){
       if(this.listPosts[i]['categoryName'] == data){

       }else{
         this.listPosts.splice(i,1);
       }

     }

   });

HTML:

 <li class="nav-item" (click) = "selectedCategory('buy')"   style="cursor: pointer;">
              <a class="nav-link"  [ngClass]="{'active':selectedCat == 'buy'}">
              <i class="material-icons left-nav">
              shopping_cart
              </i>
              Buy
              </a>
           </li>
           <li class="nav-item" (click) = "selectedCategory('sell')"style="cursor: pointer;">
              <a class="nav-link" [ngClass]="{'active':selectedCat == 'sell'}">
              <i class="material-icons left-nav">
              shopping_basket
              </i>
              Sell
              </a>
           </li>

问题是如何保留原始对象值,因为数据已经被拼接了。

最佳答案

如果你需要保留原始列表以及过滤后的列表,我建议你将原始列表保存在一个变量中,然后使用 rxjs 方法显示过滤后的

originalList$: BehaviorSubject<any> = new BehaviorSubject<any>([]);
filteredList = [];

this.loginService.categoryType$.subscribe((data) => {
    this.originalList$.next(data);
});

this.originalList$.pipe(
map(data => yourLogicToFilter(data))
).subscribe(list => filteredList = list);

filteredList 可以是一个 Observable,因此您也可以在代码中使用异步管道。

可能有更简洁的解决方案包含 rxjs,但至少这应该让你继续逻辑

关于javascript - 以 Angular 6 过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559794/

相关文章:

javascript - 将 jQuery 插件链接到 html

javascript - 动态生成的 ID 元素的 getElementByID

angular - 带有值和显示名称的 typescript 枚举

Angular 2 : CoreModule vs SharedModule

javascript - 最后的行(尚未执行)如何影响代码的开头?为什么它会抛出不正确的错误?

javascript - 使用数据属性将鼠标悬停在链接上时更改(和淡入/淡出)图像

angular - 如何在 Angular2 中声明嵌套组件

javascript - froala 没有显示一些工具栏按钮

javascript - 为什么我的 Node 脚本在 Cloud Firestore 查询后等待 60 秒才终止?

javascript - 在 Webpack 中订购多个入口点