属性 'subscribe' 在类型 'Promise<Observable<Object>>' angular 服务调用上不存在
Property 'subscribe' does not exist on type 'Promise<Observable<Object>>' angular service call
尝试在 Angular 中为组件初始化时进行服务调用,我从中获取数据的服务器需要一些响应,因此我尝试使用 promises 来分配返回的数据在我的组件中 this.stats
当尝试编写函数时,我得到 -> 属性 'subscribe' does not exist on type 'Promise<Observable>' on my 'subscribe' (在我的组件中)我已经尝试通过多种方式重写该函数,但无法更改错误,我可能只是在根本上做错了,但是在这里找不到与我的确切情况相匹配的任何东西,所以我想我会寻求任何可能的解释....也许我需要更改某些类型转换?
组件
export class StatsComponent implements OnInit {
@Input() stats: any
@Output() onUpdateStats: EventEmitter<Object> = new EventEmitter()
constructor(private specsService: SpecsService) { }
async ngOnInit(): Promise<void> {
await this.specsService.getStats().subscribe((response) => {this.stats=response});
}
updateStats(){
console.log(this.stats)
this.onUpdateStats.emit()
}
}
services.ts
async getStats():Promise<Observable<Object>>{
return await this.http.get(`http://localhost:8888/fetchStats`)
}
您不应该将 promises 与 observables 混在一起。 Angular 带有使用 Observable 设计模式的 RxJs,你一定要坚持它并避免使用 async/await。
服务:
getStats():Observable<Object>{
return this.http.get(`http://localhost:8888/fetchStats`)
}
组件:
export class StatsComponent {
@Output() onUpdateStats: EventEmitter<Object> = new EventEmitter();
stats: Observable<Object>;
constructor(private specsService: SpecsService) {
this.stats = this.specsService.getStats();
}
updateStats(){
console.log(this.stats)
this.onUpdateStats.emit()
}
}
尝试在 Angular 中为组件初始化时进行服务调用,我从中获取数据的服务器需要一些响应,因此我尝试使用 promises 来分配返回的数据在我的组件中 this.stats
当尝试编写函数时,我得到 -> 属性 'subscribe' does not exist on type 'Promise<Observable>' on my 'subscribe' (在我的组件中)我已经尝试通过多种方式重写该函数,但无法更改错误,我可能只是在根本上做错了,但是在这里找不到与我的确切情况相匹配的任何东西,所以我想我会寻求任何可能的解释....也许我需要更改某些类型转换?
组件
export class StatsComponent implements OnInit {
@Input() stats: any
@Output() onUpdateStats: EventEmitter<Object> = new EventEmitter()
constructor(private specsService: SpecsService) { }
async ngOnInit(): Promise<void> {
await this.specsService.getStats().subscribe((response) => {this.stats=response});
}
updateStats(){
console.log(this.stats)
this.onUpdateStats.emit()
}
}
services.ts
async getStats():Promise<Observable<Object>>{
return await this.http.get(`http://localhost:8888/fetchStats`)
}
您不应该将 promises 与 observables 混在一起。 Angular 带有使用 Observable 设计模式的 RxJs,你一定要坚持它并避免使用 async/await。
服务:
getStats():Observable<Object>{
return this.http.get(`http://localhost:8888/fetchStats`)
}
组件:
export class StatsComponent {
@Output() onUpdateStats: EventEmitter<Object> = new EventEmitter();
stats: Observable<Object>;
constructor(private specsService: SpecsService) {
this.stats = this.specsService.getStats();
}
updateStats(){
console.log(this.stats)
this.onUpdateStats.emit()
}
}