angular - 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 件物品去哪儿了?
解决方案
推荐阅读
- google-apps-script - 编辑触发器未运行
- php - Codeigniter 未处理 Instagram 身份验证重定向中的问号
- python-3.x - 我试图从树莓派捕获数据包一秒钟以获得每秒数据包的比率
- php - 我需要在 laravel 中找零。对象到数组 {} 到 [](尝试区分 '[object Object] 时出错)
- python - 在负利率的 PV 公式中寻找期限
- python-3.x - 如何从python中的行号中获取短语?
- html - Bootstrap 对齐文本和图像
- python-3.x - 没有名为“pylbfgs”的模块
- python - 将嵌套字典的结果相加
- python - Python DFS递归函数保留先前调用的值