我的服务类有一个属性:
articles: Observable<Article[]>;
它由使用标准 http.get().map()
解决方案的 getArticles() 函数填充。
如何手动将新文章推送到这个数组中;一个尚未持久化因此不是 http get 的一部分?
我的场景是,您创建了一篇新文章,在保存之前我希望 Article[] 数组将这个新文章推送到它,以便它显示在我的文章列表中。
此外,此服务在 2 个组件之间共享,如果组件 A 使用 ng OnInit()
消费服务并将结果绑定(bind)到重复部分 *ngFor
, 更新组件 B 的服务数组是否会同时更新组件 A 的 ngFor
部分中的结果?还是我必须手动更新 View ?
非常感谢, 西蒙
最佳答案
正如您在评论中所说,我会使用主题。
保持 articles
可观察而不是存储为数组的优点是 http 需要时间,因此您可以订阅并等待结果。此外,这两个组件都会获得任何更新。
// Mock http
const http = {
get: (url) => Rx.Observable.of(['article1', 'article2'])
}
const articles = new Rx.Subject();
const fetch = () => {
return http.get('myUrl').map(x => x).do(data => articles.next(data))
}
const add = (article) => {
articles.take(1).subscribe(current => {
current.push(article);
articles.next(current);
})
}
// Subscribe to
articles.subscribe(console.log)
// Action
fetch().subscribe(
add('article3')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.js"></script>
关于javascript - 如何推送到 Angular 4 中的数组 Observable?接收脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424966/