【发布时间】:2018-06-06 02:57:42
【问题描述】:
假设一个电子邮件收件箱。初始页面加载时会加载 50 封最近的电子邮件。
从那时起,任何新收到的电子邮件都应显示在列表顶部。
复杂的因素是用户可以通过向下滚动到页面底部来进行分页。这会将下一页数据加载到列表底部。
我想知道如何使用 Angular 和 RxJS 来实现这一点。最初我希望有一个 Subject<Email> ,我可以调用 next(email) 将其推送到流中,但这并没有真正起作用,因为我们需要追加和前置。
另一个复杂的因素是新电子邮件应该是动画的(即淡入)。
我打算这样渲染它:
<email *ngFor="let email of (emails$ | async)">...</email>
相反,我正在考虑将其更改为以下内容:
<div class="new-emails" *ngFor="let email of (newEmails$ | async)">...</div>
<div class="initial-emails" *ngFor="let email of (initialEmails$ | async)">...</div>
<div class="older-emails" *ngFor="let email of (oldEmails$ | async)"></div>
这是该问题的标准解决方案,还是我可能缺少一些 RxJS 来简化此问题?
【问题讨论】:
-
我认为最好不要绑定订阅本身,而是在包含所有电子邮件的类中创建一个数组,并使用 2 个 getter - 一个用于获取新电子邮件,第二个用于其他电子邮件(通过过滤单个数组)。此外,初始电子邮件和旧电子邮件不需要 2 个 div。两者都使用单个 div。这是我的看法
标签: angular rxjs observable reactive-programming