sim*_*www 10 javascript observable rxjs angular
我的服务类上有一个属性,如下所示:
articles: Observable<Article[]>;
Run Code Online (Sandbox Code Playgroud)
它由使用标准http.get().map()解决方案的getArticles()函数填充.
如何手动将新文章推送到此数组中; 一个还没有坚持,所以不是http的一部分?
我的方案是,你创建一个新文章,在保存之前我希望Article []数组将这个新文章推送到它,以便它显示在我的文章列表中.
此外,此服务在两个组件之间共享,如果组件A使用ng消耗服务OnInit()并将结果绑定到重复节*ngFor,则将从组件B更新服务数组同时更新组件A的ngFor节中的结果?或者我必须手动更新视图吗?
非常感谢,西蒙
正如您在评论中所说,我将使用主题。
保持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')
)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11062 次 |
| 最近记录: |