【发布时间】:2023-03-10 19:47:01
【问题描述】:
我有一些代码,我可以在其中观察到。我想将数组过滤方法更改为过滤 rxjs。如何使用 rxjs 的过滤器操作符?
@Input() public articleTags: Observable<ALArticleTag[]>;
public selectedArticleTags: ALArticleTag[] = [];
public ngAfterViewInit(): void {
this.articleTags.pipe(
take(1),
map(tags => {
return this.selectedArticleTags = this.article.tagIds ? tags.filter(tag => {
return this.article.tagIds.includes(tag.id);
}) : [];
}),
).subscribe(response => {
this.selectedArticleTags = response;
this.changeDetection.markForCheck();
});
}
【问题讨论】:
-
为什么要改成rxjs的
filter? -
因为这是我老板的建议,我必须执行它
-
rxjs
filter过滤源 Observable 发出的项目,而数组filter过滤数组中的元素,两个不同的东西。您可以将articleTags制作成Observable<ALArticleTag>(不是数组)并在源处为每个标签发出而不是发出一个数组,但是您也必须删除take(1) -
一开始你为什么要做
take(1)?articleTags是否发出多个值?使用该组件的组件中articleTags是如何定义的? -
@prolina 有办法做到这一点,但我严重怀疑在这种情况下你是否需要它。告诉你的老板 rxjs
filter在这里并没有带来任何好处,只会让实现变得不那么直观
标签: angular rxjs observable