Angular 2 - 在服务中定义的变量,不在视图中更新

狮子座

大家好,我有一个疯狂的想法,将服务用作缓存存储。所以我在 Service 中定义了几个变量。数据在服务中可以正常更新,但更改未反映在视图中。视图已填充,然后运行服务层。我不确定,即使在服务中存储数据是个好主意?有人可以解释一下吗?这是我的服务代码:

categories :  SelectItem[]=[];

constructor(private utilityService:UtilityService) {

}

//populate all drop downs array with initial data from db
 populateAll() {
//get categories
this.getCategories();
//there are lot more calls here
}
private getCategories() {
 if(this.categories.length==0){
   this.utilityService.getAllCategories().subscribe(cat=>{
   this.categories = 
   this.utilityService.getSelectItemPublished(cat,"Category");
  })
  }
 }

这就是我在组件中调用它的方式

constructor(
          private cache:CacheStoreService,

         ) { }

ngAfterViewInit()
{
this.categories=this.cache.categories;
this.depts=this.cache.depts;
this.focuses=this.cache.depts;
this.statuses=this.cache.statuses;
this.phases=this.cache.statuses;
this.visibilities=this.cache.visibilities;

}
ngOnInit() {
   this.cache.populateAll();

感谢您的帮助。还有一个问题:如何在 db-update 缓存中添加新数据时更新服务变量。**我知道,我可以返回 observable 并在组件中订阅它。我正在寻找另一种方式。不确定,如果它能够做到吗?**

谢谢

JB尼泽

这是发生的事情:

  1. 服务被初始化,它的类别是一个空数组
  2. 您通过调用告诉服务获取数据 this.cache.populateAll()
  3. service方法发送异步请求
  4. 该组件在其自己的类别中存储对服务类别数组的引用。数组还是空的
  5. 很久之后,对异步请求的响应又回来了。回调被调用。它不会填充服务和组件引用的数组。相反,它会为服务的类别字段分配一个新数组。该组件仍然引用旧的空数组。

有几种方法可以解决这个问题。

第一种方法是避免用另一个数组替换数组,而是填充原始数组。

第二种方法是始终从服务请求数组,而不是在组件中存储第二个引用:

get categories() {
  return this.cache.categories;
}

第三种方法是从服务中的 observable 发出一个事件,组件将订阅该事件以获取新类别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular 2-视图中的变量未更新

来自分类Dev

使用AngularFire2在Angular2中嵌套的Observables不在视图中呈现

来自分类Dev

使用AngularFire2在Angular2中嵌套的Observables不在视图中呈现

来自分类Dev

更新视图中的Angular变量

来自分类Dev

angular-我在视图中有一个元素绑定到服务中的变量,但是在更新服务时视图没有得到更新

来自分类Dev

Angular2中的视图未更新

来自分类Dev

Angular 2 数组推送不从服务更新视图

来自分类Dev

在Angular2中更改组件变量后,视图未更新

来自分类Dev

Angular2,在settimeout中更改变量后视图未更新

来自分类Dev

Angular2:变量更改时视图不会更新

来自分类Dev

在yii2的视图中添加不在模型中的自定义字段

来自分类Dev

数据更新后,Angular2和打字稿中视图中的值未更新

来自分类Dev

Angular 2 中的服务捆绑

来自分类Dev

订阅Angular 2中的ActivatedRoute参数不会更新视图模板

来自分类Dev

在Angular2中完全更新视图时调用函数

来自分类Dev

在Angular2中完全更新视图时调用函数

来自分类Dev

Angular 2中的MVC-是否从服务中更新组件?

来自分类Dev

Angular 2中的路径变量

来自分类Dev

Angular js服务值不会在视图中更新

来自分类Dev

Angular 2访问视图

来自分类Dev

angular2:值未显示在视图中-未定义

来自分类Dev

angular2:值未显示在视图中-未定义

来自分类Dev

Angular2:在组件视图中通过ngIf使用自定义时间

来自分类Dev

angular2 服务中未定义 LocalStorage

来自分类Dev

如何在Angular 2模板中定义变量?

来自分类Dev

强制Angular 2视图从数据更新

来自分类Dev

组件属性更改的Angular 2更新视图

来自分类Dev

组件属性更改的Angular 2更新视图

来自分类Dev

Angular2:视图未更新

Related 相关文章

热门标签

归档