【发布时间】:2020-04-13 22:41:20
【问题描述】:
我有一个输入字段,在提交时会进行 http 调用,然后绘制图表。当我单击图形的任何节点时,会进行相同的 http 调用,并将结果附加到先前的结果并更新图形。到这里为止一切正常。我正在使用扫描运算符来更新我的结果集。现在,我想要的是在我提交输入表单时重置结果集(即返回新的原始响应)并在单击图形节点时附加到结果集。关于如何实现这一点的任何想法?主要是如何在表单提交时重置此流?或者如何在表单提交上显示新数据并在节点点击上显示更新数据
Here linkingDetailsByAccount$ makes the http call and gets the data from the server. this.linkingDetailsByAccountSubject.next(account);在节点点击和表单提交时调用相同的代码,然后激活我的流。
graph$ = this.linkingDetailsByAccount$.pipe(
pluck('graph'),
scan((linkedDetails, adjacency) => {
const { nodes: linkedNodes = [], edges: linkedEdges = [] } = linkedDetails;
const { nodes: newNodes = [], edges: newEdges = [] } = adjacency;
const updatedNodes = differenceBy(newNodes, linkedNodes, 'id');
const updatedEdges = differenceWith(
newEdges,
linkedEdges,
(newEdge: VisEdge, existingEdge: VisEdge) => newEdge.from === existingEdge.to
);
const allNodes = [...linkedNodes, ...updatedNodes];
const allEdges = [...linkedEdges, ...updatedEdges];
return {
nodes: allNodes,
edges: allEdges
};
}, {} as NodesEdges)
);
感谢您对此的任何意见。
谢谢,
瓦特萨尔
【问题讨论】:
标签: rxjs observable angular-observable