我正在订阅,并且在Angular 6中看到重复的项目,我不确定为什么

时间:2018-07-19 21:42:09

标签: angular rxjs

我将代码放在下面。我有一个帖子服务,该服务可以跟随和取消关注帖子,并将其ID添加到一个Observable数组中。我可以根据需要在视图中显示项目,但是当我将其推送到followedPostsArray时,它将推送1 +每个可能已经在followedPostsArray中的项目。

当我取消关注时,视图也不会改变。

Component.ts

 this.postService.getFollowedPosts().subscribe((followedPosts) => {
        followedPosts.forEach((postId) => {
            this.frApiService.GetPostById(postId).subscribe((post) => {
                this.followedPostsArray.push(post);
                console.log(this.followedPostsArray);
            });
        });
    });

Component.html

    <div class="item lib-flex" *ngFor="let post of followedPostsArray; let i = index;">
    <div class="title lib-grow" (click)="loadPost(post)">
        {{post?.title | shortenContentPipe}}
        <span (click)="unfollow(post, $event)">UNFOLLOW</span>
    </div>
    <div class="time lib-flex lib-main-center lib-cross-center lib-pr5">
        <i class="icon icon-Clock lib-mr5"></i>
        {{getAge(post?.latestCommentDateTime)}}
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

不清除<i>似乎是一个错误。解释给出的代码和您的附加订阅,我想您会在添加新帖子时重新加载所有帖子。

您必须首先重置阵列。我仍然不知道您的“跟随”按钮调用哪种方法,所以我用一个符号名称来即兴创作。

<a href="/some/link">Content</a>

这应该会阻止您重复输入。