Angular ';返回时超过最大调用堆栈大小';与'冲突;订阅在类型void'上不存在;
我通过在firestore服务上添加get函数时的return,修复了“订阅在类型void上不存在”的问题。然而,出现了另一个问题,即“返回时超出了最大调用堆栈大小” 我试图修复其中任何一个,但导致了另一个问题 firestore.service.tsAngular ';返回时超过最大调用堆栈大小';与'冲突;订阅在类型void'上不存在;,angular,typescript,return,google-cloud-firestore,subscribe,Angular,Typescript,Return,Google Cloud Firestore,Subscribe,我通过在firestore服务上添加get函数时的return,修复了“订阅在类型void上不存在”的问题。然而,出现了另一个问题,即“返回时超出了最大调用堆栈大小” 我试图修复其中任何一个,但导致了另一个问题 firestore.service.ts public getRoom() { this.rooms = this.afs .collection('Room') .snapshotChanges() .pipe( map(ch
public getRoom() {
this.rooms = this.afs
.collection('Room')
.snapshotChanges()
.pipe(
map(changes => {
return changes.map(a => {
const data = a.payload.doc.data() as Room;
data.id = a.payload.doc.id;
return data;
});
})
);
//Maximum call stack size exceeded when i added return here
return this.getRoom().map(response => response.json());
}
组件技术
ngOnInit() {
//subscribe does not exist on type void came up when no return on get
this.firestore.getRoom().subscribe((room: Room[]) => {
this.arr = room;
console.log(this.arr);
});
}
getRoom()函数的递归调用问题。您正在getRoom()中调用getRoom() 如有必要,请拔下自动呼叫线路-
public getRoom() {
return this.rooms = this.afs
.collection('Room')
.snapshotChanges()
.pipe(
map(changes => {
return changes.map(a => {
const data = a.payload.doc.data() as Room;
data.id = a.payload.doc.id;
return data;
});
})
);
//Maximum call stack size exceeded when i added return here
//return this.getRoom().map(response => response.json());
}
谢谢!当我删除此行时,出现了另一个问题“订阅不存在于类型void上”,您是否添加了回答中提到的
return this.rooms=this.afs
对不起,我没有注意到,非常感谢!现在修好了