【发布时间】:2017-06-26 07:58:48
【问题描述】:
寻找一种方法,让服务在必要时将最新数据提供给订阅的组件。例如:Component3 将更改写入 API > Component1 和 Component2 必须获取最新数据。
目前,这两个组件都订阅了服务返回的 observable,如果两者都呈现,这会导致 2 个 API 请求。这感觉不对。据我了解,这些组件应该被提供数据,而不是自己请求数据。需要明确的是:此服务返回的数据始终在 Component1 中使用,而 Component2 是可选渲染的。
这里有一些 sn-ps 和一些我到目前为止所做的描述:
Service 通过 HTTP 从 API 获取数据。 Component1 和 Component2 订阅了 Service 返回的 observable:
import { Injectable } from "@angular/core";
import { Http } from "@angular/http";
import 'rxjs/add/operator/map';
@Injectable()
export class GroupService{
constructor(private _http: Http){}
getGroups(){
return this._http.get('/assets/groups.json')
.map((res) => {
return res.json();
});
}
}
Component1和Component2在功能上基本相同。这是其中之一:
import { Component } from '@angular/core';
import { router } from '../../app.router';
import { GroupService } from '../../services/group.service';
import { Group } from '../../interfaces/group.interface';
@Component({
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss'],
})
export class SidebarComponent
{
router;
groups: Group[];
constructor(private _groupService: GroupService){
this.router = router;
this.getGroups();
}
getGroups(){
this._groupService.getGroups()
.subscribe((groups) => {
this.groups = groups;
});
}
}
【问题讨论】:
标签: angular typescript rxjs