当前位置: 首页 > 知识库问答 >
问题:

使用RxJS的角数据服务

孟翰海
2023-03-14

可选项显示详细信息的摘要。当编辑详细项时,我想用更新的信息更新可选项。

我有一个api服务,它使用HttpClient从后端获取值。

api.service.ts

public getAllItems(): Observable<Item[]> {
return this.http.get<Item[]>(this.apiUrl + '/items')
  .map(response => {
    return response.map((item) => new Item(item));
  });
}

items-data.service.ts

get items$(): Observable<Item[]> {
  return this.api.getAllItems();
}

主组件(左侧)只注册可观察的数据服务。

item-master.component.ts

data$: Observable<Item[]>;

constructor(private itemsDataService: ItemsDataService) { }

ngOnInit() {
  this.data$ = this.itemsDataService.items$;
}
<div *ngIf="(data$ | async) as data">

共有1个答案

宋高寒
2023-03-14

假设我正确回答了您的问题,我将把服务更改为如下所示(这是一个非常示意性的描述):

items$: Observable<Array<Item>>;

currentItemId$ = new Subject<String>();

currentItem$: Observable<Item> = this.currentItemId$.map(<your fetch code>);

loadItem(itemId) {
  this.currentItemId$.next(itemId);
}

无论何时单击主视图中的项,它都将调用loaditem()方法,该方法将获取特定值并将其管道传递到currentitem$

这为您提供了一种更面向服务的(使用存储)方法,也就是说,您告诉它加载一个项目,并在公开的可观察的

 类似资料:
  • 问题是: 我有一个拦截器: 它在角5中工作,但现在我已经迁移到6,这不再工作了。 它表示属性do不存在于可观察类型上。 我还尝试从这个线程实现解决方案:LINK也不起作用。 本主题说这是rxjs更改的结果。进行建议的更改后,问题仍然存在(现在使用“点击”而不是“执行”) 这里是导入部分: 注意:注释行也被尝试过。

  • 我是Rxjs可观测对象的新手,我需要使用Rxjs实现节流。 在下划线中,我们使用下面的行来实现这一点- 请协助如何使用可观察到的数据。

  • 我有一个url,它返回类型为的数组: 我使用为数组中的每个电影返回一个: 所以本质上,我想创建一个返回FullMovie对象流的方法,因为请求解析:

  • 问题内容: 我试图让两个不同的控制器互相通信。 控制器1 该控制器旨在从文本字段中获取文本(使用ng-model =’email’),并将文本放入服务(emailService)中,以便可以在下一个ng- view(由下一个ng-view控制)中使用控制器) //出于测试目的,我只是将“ Hi”直接放入saveEmail函数中 控制器2 为了进行有目的的测试,我使用window.alert显示ge

  • 在愉快地使用AngularJS 1之后,我目前正在尝试自学Angular2和打字脚本。*在过去的4年里!我不得不承认我讨厌它,但我确信我的尤里卡时刻就在眼前。。。无论如何,我已经在我的虚拟应用程序中编写了一个服务,它将从我编写的提供JSON服务的假后端获取http数据。 现在在一个组件中,我希望运行(或链)两个和方法。在AngularJS中,这很容易,因为在我的控制器中,我会做这样的事情来避免“末

  • 嘿,伙计们,我是angular的新手,对JavaScript不是很熟练。这个设置很好地引入了json数据,但是,当我对对象中的某些属性进行更改时,它们会在我更改视图和重新加载控制器时重置。如有任何关于如何处理这一问题的帮助或指导,将不胜感激。