Angular 4 - 从表中删除当前行

时间:2017-10-17 00:25:53

标签: angular rxjs state-management

我想通过点击删除链接从表中删除当前行。

我使用下面的代码显示数据

服务

webpack-dev-server --open --inline --hot --watch --progress

部件

getMembers(): Observable<any> {
  return this._http.get('http://localhost/membership/main/getUsers')
  .map(response => response.json() );
}

HTML

members$: Observable<any[]>;

ngOnInit() {
  this.members$ = this._membersService.getMembers()
}

delete(id) {
 this._membersService.deleteUser(id);
}

我听说过拼接功能。但是我找不到如何在可观察中使用它的方法。

1 个答案:

答案 0 :(得分:1)

我认为你在这里有更大的问题。

确实没有简单的方法从T持有的数组中删除单行Observable<T[]>。我建议你去常规路线:

members: any[];

ngOnInit(): void {
  this._membersService
    .getMembers()
    .subscribe(members => this.members = members);
}

delete(memberIndex: number): void {
  this.members.splice(memberIndex, 1);
}

<a (click)="delete(i)">

您希望在字段中保存结果数据的原因是您的模板。 我在你的模板代码中打赌你有类似于*ngFor="let member of members$ | async"的东西。问题是此代码将导致在每个更改检测周期中重新评估members。这意味着,当绝对没有必要时,远程API将被多次调用!

话虽如此,我必须提一下,如果您说(例如)@ngrx/store用于数据管理,我的答案将完全不同。但是,由于你的问题中没有提到这一点,我认为,这是不可能的。

否则,您也可以使用BehaviorSubject,但我不建议您使用当前的设置。最好将BehaviorSubject放入您的服务中并将其公开为Observable