Angular 如何避免在Observable中超过最大调用堆栈大小?

Angular 如何避免在Observable中超过最大调用堆栈大小?,angular,rxjs,Angular,Rxjs,我已筛选出以下列表: public filteredEvents$ = new BehaviorSubject([]); 以及反转属性的方法,该方法选中了\u export并将更改推回: public checkAll(): void { this.filteredEvents$ .pipe( map((events: IEvent[]) => { return events.map((event: IEvent) =>

我已筛选出以下列表:

  public filteredEvents$ = new BehaviorSubject([]);
以及反转属性
的方法,该方法选中了\u export
并将更改推回:

  public checkAll(): void {
    this.filteredEvents$
      .pipe(
        map((events: IEvent[]) => {
          return events.map((event: IEvent) => {
            event.checked_export = !event.checked_export;
            return event;
          });
        })
      )
      .subscribe((events) => this.filteredEvents$.next(events));
  }
模板为:

<div *ngFor="let item of filteredEvents$ | async">
我可以将chnages推送到
这里。选择事件$
如下:

  public checkAll(): void {
    this.filteredEvents$
      .pipe(
        map((events: IEvent[]) => {
          return events.map((event: IEvent) => {
            event.checked_export = !event.checked_export;
            return event;
          });
        })
      )
      .subscribe((events) => this.selectedEvents$.next(events));
  }
但它总是这样说:

 public export(): void {
    this.eventService.selectedEvents$
      .pipe().subscribe((fileid) => {});
}

我的问题是修改当前的
this.filteredEvents$

超出最大调用堆栈大小的原因是因为您有一个无限循环,您订阅
filteredEvents$
,然后在订阅中向
filteredEvents$
发送值,这将再次触发订阅,有效地导致无限循环

您只需删除
订阅
异步
管道即可自动订阅更改,使用
管道
,您将能够根据需要转换数据:

public checkAll():void{
this.filteredEvents$=this.filteredEvents$
.烟斗(
映射((事件:IEvent[])=>{
返回事件.map((事件:IEvent)=>{
event.checked_export=!event.checked_export;
返回事件;
});
})
)

}
您收到超过最大调用堆栈大小的原因是您有一个无限循环,您订阅了
filteredEvents$
,然后在订阅中您向
filteredEvents$
发出值,这会再次触发订阅,有效地导致无限循环

您只需删除
订阅
异步
管道即可自动订阅更改,使用
管道
,您将能够根据需要转换数据:

public checkAll():void{
this.filteredEvents$=this.filteredEvents$
.烟斗(
映射((事件:IEvent[])=>{
返回事件.map((事件:IEvent)=>{
event.checked_export=!event.checked_export;
返回事件;
});
})
)

}
类型“Observable”缺少类型“BehaviorSubject”中的以下属性:\ u value,value,getValue,接下来,检查我的编辑器使用take(1)时出现相同错误:
public filteredEvents$=new BehaviorSubject([])
您收到的错误是什么?相同:
类型“Observable”缺少类型“BehaviorSubject”中的以下属性:_value、value、getValue、next和9
类型“Observable”缺少类型“BehaviorSubject”中的以下属性:_value、value、getValue、next,请使用take(1)检查我的编辑相同错误:
public filteredEvents$=new BehaviorSubject([])您收到的错误是什么?相同:
类型“Observable”缺少类型“BehaviorSubject”中的以下属性:\u value、value、getValue、next和9
 public export(): void {
    this.eventService.selectedEvents$
      .pipe().subscribe((fileid) => {});
}