【发布时间】:2018-12-14 10:05:59
【问题描述】:
我正在尝试共享我的服务提供商通过 HTTP GET 检索到的数据。我在http.service 中获取数据:
@Injectable()
export class HttpService {
constructor(private http: HttpClient) { }
public getData4(url: string): Observable<Premium[]> {
return this.http.get<Premium[]>(url);
}
}
app的路由是:
<TabsComponent>
<TablesComponent>
<TablesComponent/>
</TabsComponent>
在 tabs.component.ts 我有:
export class TabsComponent implements OnInit {
myUrl4All = 'http://localhost:8083/RCCT-2.0-SNAPSHOT/rest/v2';
premiumsO: Premium[] = [];
constructor(private httpService: HttpService, private entity1Service: Entity1Service) { }
ngOnInit() {
this.httpService.getData4(this.myUrl4All).subscribe(data => this.premiumsO =
data['premiumList']);
}
}
在我的 tabs.component.html 我有:
<div>
<app-tables-component></app-tables-component>
</div>
还有我的 tables.component.ts:
export class TablesComponent implements OnInit {
constructor() { }
returnedArray: Premium[] = [];
ngOnInit(): void {
this.returnedArray = ?????????
}
}
我的问题是:现在我有一个带有 observable 的 http.service,但我想通过使用订阅在我的 tables.component 中捕获和显示来自 http 的数据。我应该如何更改我的代码来做到这一点?
【问题讨论】:
-
如果您的
TabsComponent是父级而TablesComponent是子级,那么您可以使用@Input -
angular.io/guide/component-interaction。另请注意,您的代码没有意义。该服务声称 observable 发出的事件属于 Premium[] 类型,并且在您的组件中,您使用的是
data['premiumList']。数组没有premiumList属性。 -
对于 - JB Nizet - 我从 Java 中以 JSON 格式接收对象列表。 premiumList - 我的 JSON 中的主要“包装器”。所以,现在编码它运行良好!
-
它运行良好,但它是错误的。你说它返回
Observable<Premium[]>是在撒谎,因为实际返回的类型是Observable<{premiumList: Premium[]}>
标签: angular http get observable subscribe