首页 > 解决方案 > RXJS 地图运算符 - 空参数

问题描述

我正在用角度写一个管道。我在其他页面上有这个工作,但由于某种原因,在这个页面上,map()(或者 pipe())运算符不适合我。由于某种原因,该参数为空。

import { Pipe, PipeTransform } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { Project } from '../services/project/project.service';
/**
 * Project Status Filter Pipe.
 * Filters Projects by Status
 ** Usage: "Projects$ | statusFilter$:filter | async"
 */
@Pipe({
  name: 'statusFilter$'
})
export class StatusFilterPipe implements PipeTransform {
  transform(items$: BehaviorSubject<Project[]>, ...args: number[]) {
    if (items$ === null) { return null; }

    const filter = args[0] || null;

    if (filter === null) { return items$; }

    console.log('status 1', items$); // Behavior Subject - value is array[36]
    return items$.pipe(map(
      items => {
        console.log('status 2', items);  // items is NULL
        items.filter(p => p.statusId === filter); //throws error
      }));
  }

}

这就是它的名称:

<ng-container *ngIf="(projects$ | statusFilter$: status.statusId | async) as projects; else projectsLoading">

这是从 ngOnInit() 事件调用的加载 projects$ 的代码:

private async loadProjects() {
    const projects = await this.projectService.listReport('organizations', this.orgId).toPromise();
    if (projects) {
      projects.sort((a, b) => {
        return (a.sortOrder > b.sortOrder) ? 1 : -1;
      });
    }
    this.projects$.next(projects);

  }

它在 items.filter() 上引发错误,因为 items 为空。我的 36 件物品去哪儿了?

标签: angularrxjs

解决方案


推荐阅读