angular - 为什么过滤器运算符的参数没有采用可观察数组中存在的属性
问题描述
我正在尝试过滤来自可观察对象的数组,如果属性“start”是日期字符串与另一个日期字符串匹配,但在过滤器运算符函数中,参数未将“start”识别为有效属性
我已经阅读了多个示例,并且与我的比较似乎是一个非常相似的场景
export class AuctionsService() {
private _auctions = new BehaviorSubject(
[
{
idAuction: '1',
start: '2019-07-18T15:30',
},
{
idAuction: '2',
start: '2019-07-18T15:30',
},
{
idAuction: '3',
start: '2019-07-18T15:30',
},
{
idAuction: '4',
start: '2019-07-19T15:30',
},
]
);
get auctions() {
return this._auctions.asObservable();
}
}
当我订阅这个 observable 时在另一个文件上
selectedDate = '2019-07-19T12:46';
constructor(
private auctionsService: AuctionsService,
) { }
ngOnInit() {
this.auctionsService.auctions.pipe(filter(
aucs => aucs.start.slice(0, 10) === this.selectedDate.slice(0, 10)
)).subscribe(
aucs => { this.auctions = aucs; }
);
}
预期输出应为:{ idAuction: '4', start: '2019-07-19T15:30', },
但没有编译它声明 .start 不是 aucs 的有效属性
解决方案
正如@dcg 所说,aucs
从this.auctionsService.auctions
observable 返回的是一个数组,但是您的代码将其视为数组中的一个元素。因此,您需要将其过滤为数组:
ngOnInit() {
this.auctionsService.auctions.pipe(
map(
aucs => aucs.filter(auc => auc.start === this.selectedDate;
)
)
).subscribe(aucs => {
this.auctions = aucs;
});
}
推荐阅读
- python - 如何在python中连续连接子列表中的一对坐标?
- php - 如何在 dockerfile 上编写正确的指令以增加 PHP 资源?
- apache-spark - 纱线上的 Spark 应用程序卡在 toLocalIterator.toList
- reactjs - reactstrap modal 中的 Graphql 突变 - 无法对未安装的组件执行 React 状态更新
- google-maps - 从 ArcGIS KML 将数据导入 Google 地图:无法识别字段
- c++ - C++ 中用于并行化的字符串数组
- visual-studio - 为什么 VS 2019 让哈希注释在 YAML 文件中使用大字体?
- sql - 如何创建其中一个字段不是主键的关联表?
- java - 如何根据版本过滤出 Java 方法?
- xcode - 每次我将文本字段拖到屏幕上时,它都会调整大小以适应整个屏幕。有什么办法可以调整它的大小使其成为一个小文本框?