【发布时间】:2018-01-19 08:49:26
【问题描述】:
我正在尝试通过以下方式将 Observable 绑定到 Angular 中的模板变量:
[class.active]="isBookmarked$ | async"
在 ngOnInit 中,我正在设置 Observable:
var promise = this.cacheService.getItem(this.bookmarkId).then(() => {
return true;
}).then(() => {
return false;
});
this.isBookmarked$ = Observable.fromPromise(promise);
当我加载页面时效果很好。但是当我添加或删除一个项目时,模板无法识别更改检测。
this.cacheService.removeItem(this.bookmarkId).then(() => { });
// or
this.cacheService.saveItem(this.bookmarkId, true, "bookmarks").then(() => { });
我尝试了不同的 Observable,也尝试了 Promise,但没有将其设为 Observable,但我无法让它工作。
【问题讨论】:
-
但是当我添加或删除一个项目时,模板无法识别更改检测。您使用的是主题吗?因为变量
this.isBookmarked在第一个变量之后不会继续更新 -
不,我没有使用主题。所以基本上你的意思是我需要一个共享主题,所以在你调用 removeItem/saveItem 之后,isBookmarked Observable 得到更新,对吧?
-
是的.. 或者你需要以某种方式再次调用 getItem
标签: angular typescript asynchronous observable angular-pipe