1

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

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

服务

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

成分

members$: Observable<any[]>;

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

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

html

<a (click)="delete(member?.id, i)">

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

4

1 回答 1

1

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

确实没有简单的方法可以TObservable<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.

于 2017-10-17T00:30:45.190 回答