为什么过滤器运算符的参数没有采用可观察数组中存在的 属性
why the argument from filter operator is not taking a property that exist in the observable array
如果日期字符串 属性 "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',
开始:'2019-07-19T15:30',
},
但未编译它指出 .start 不是 aucs属性 的有效
正如@dcg 所说,从 this.auctionsService.auctions
可观察对象返回的 aucs
是一个数组,但您的代码将其视为数组中的一个元素。所以你需要把它过滤成一个数组:
ngOnInit() {
this.auctionsService.auctions.pipe(
map(
aucs => aucs.filter(auc => auc.start === this.selectedDate;
)
)
).subscribe(aucs => {
this.auctions = aucs;
});
}
如果日期字符串 属性 "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', 开始:'2019-07-19T15:30', },
但未编译它指出 .start 不是 aucs属性 的有效
正如@dcg 所说,从 this.auctionsService.auctions
可观察对象返回的 aucs
是一个数组,但您的代码将其视为数组中的一个元素。所以你需要把它过滤成一个数组:
ngOnInit() {
this.auctionsService.auctions.pipe(
map(
aucs => aucs.filter(auc => auc.start === this.selectedDate;
)
)
).subscribe(aucs => {
this.auctions = aucs;
});
}