我发现了几个具有相同标题的问题,据我所知,其中一些问题表明解决方案基本上是返回一个 Observable 而不是一个数组(其他问题是关于 FireBase 的,这不是我的情况)。好吧,就我而言,下面的代码确实返回一个 Observable (查看“getServerSentEvent(): Observable {return Observable.create ...”)我的最终目标是获取从 Rest WebFlux 返回的流中的所有事件。我没有通过后端,因为我很确定这个问题与 Angular 中的一些错误有关。最重要的是,我可以调试并查看事件是否正确地从 app.component.ts 传送到 extratos$(参见下图)。整条日志core.js:6185 ERROR Error: InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe' at invalidPipeArgumentError (common.js:5743) at AsyncPipe._selectStrategy (common.js:5920) at AsyncPipe._subscribe (common.js:5901) at AsyncPipe.transform (common.js:5879) at Module.ɵɵpipeBind1 (core.js:36653) at AppComponent_Template (app.component.html:8) at executeTemplate (core.js:11949) at refreshView (core.js:11796) at refreshComponent (core.js:13229) at refreshChildComponents (core.js:11527)应用程序组件.tsimport { Component, OnInit } from '@angular/core';import { AppService } from './app.service';import { SseService } from './sse.service';import { Extrato } from './extrato';import { Observable } from 'rxjs';@Component({ selector: 'app-root', templateUrl: './app.component.html', providers: [SseService], styleUrls: ['./app.component.css']})export class AppComponent implements OnInit { //extratos: any; extratos$ : Observable<any>; constructor(private appService: AppService, private sseService: SseService) { } ngOnInit() { this.getExtratoStream(); } getExtratoStream(): void { this.sseService .getServerSentEvent("http://localhost:8080/extrato") .subscribe( data => { this.extratos$ = data; } ); }}
1 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
当您编写此内容时observer.next(this.extratos);
,这意味着您在回调的参数this.extratos
中在组件端得到的内容,因此当您这样做时,您实际上是在存储. TypeScript 不会抱怨这一点,可能是因为当您像您一样从头开始构建时,它不够智能来推断类型。data
this.extratos$ = data;
extratos
Array
Observable
尝试这个:
this.extratos$ = this.sseService .getServerSentEvent("http://localhost:8080/extrato");
并在模板中:<div *ngFor="let ext of extratos$ | async">
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消