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) => {});
}