我有一个Observable
我试图过滤,但我似乎无法在我看来正确显示它。
comments = new Rx.BehaviorSubject([
{body: 'foo', commentable_type: 'Client'},
{body: 'foo', commentable_type: 'Client'},
{body: 'foo', commentable_type: 'Purchase'},
{body: 'foo', commentable_type: 'Client'},
{body: 'foo', commentable_type: 'Payment'},
]);
comments$ = comments.asObservable();
clientCommentStream$ = this.comments$.filter(comment => comment['commentable_type'] === 'Client');
在我看来,这很有效:
<li *ngFor="let comment of comments$ | async">
{{ comment.body }}, {{ comment.commentable_type }}
</li>
但这没有显示任何内容:
<li *ngFor="let comment of clientCommentStream$ | async">
{{ comment.body }}, {{ comment.commentable_type }}
</li>
我的stack blitz显示过滤正在运行,但它不会显示,因为似乎对象的结构已更改。任何见解都会有所帮助。
答案 0 :(得分:2)
你缺少退货声明
clientCommentStream$ = this.comments$.filter(function(comment) {
return comment.commentable_type == 'Client'; <-- missing "return"
})
或使用箭头功能
clientCommentStream$ = this.comments$
.filter(comment => comment.commentable_type == 'Client')
修改强>
使用Rx.Observable.from
代替Rx.BehaviorSubject
来自docs BehaviorSubject发出最新项目,不确定它是如何工作的