我使用http observable获取数据。加载数据并等待响应时,我想禁用提交按钮。Angular 2 - http - Observable - 启动/停止/运行状态
当前我已经在每个组件/表单上实现了状态码,以便在调用subscribe方法之前将状态设置为正在运行,并且如果响应存在,则禁用运行标志。
问题是我必须对每个组件/表单执行此检查。我想用一个模型将observable包装起来,在请求发出前设置状态信息。
什么是最好的方法?在发出请求之前,我没有找到解决方案来添加函数。 Observable之前没有功能。我也尝试连接两个Observables。第一个仅用于表示第二个Observable正在启动。
有没有一种简单的方法来以抽象的方式来聆听observable的开始。我想换HTTP服务,以保持(启动/停止/运行/ ...)指出...
编辑1:
这里是什么即时通讯目前正在做一些伪代码。我在每个由按钮触发的observable上添加了这个状态持有者。我想删除这个重复的代码。
this.mystateHolder.start(); // sets running;error,success to false
this.myservice.updateSomething(mydata).subscibe(
ok => mysateHolder.stop(false) // sets success to true and running to false
error => mystateHOlder.stop(true, error) // sets error to true and running to false
)
<button [disabeld]="mystateHolder.isRunning()"></button>
<span *ngIf="mystateHolder.hasErrors()">mystateHolder.getErrorMessage()</span>
目标伪代码(也许):
const state = this.myservice.updateSomething(mydata).state()
state.subscribe();
console.log(state.hasErrors())
console.log(state.isRunning())
console.log(state.success())
我已更新我的示例(编辑1)。如果我检查数据,那么它也是另一种状态检查。如果没有数据返回会怎么样?我必须一次又一次地对所有特定用例的每个可观察对象执行操作,但每次都是一样的。 – meleagros