问题描述
如何将后弹性响应转换为ng数组?
我来自graphqlclient的查询是:
query MyQuery {
messages {
nodes {
message
}
}
}
这是我的回复:(**** let gimsData=client.request(query)
*****)
{
"data": {
"messages": {
"nodes": [
{
"message": "test "
},{
"message": "test2"
}
]
}
}
}
在我的page.html
<ion-card button *ngFor="let item of (gimsData | async)" >
TypeError:您提供了一个无效的对象,该对象应在其中流。您可以提供一个Observable,Promise,Array或Iterable。
我认为我需要传递(映射)或订阅gimsData。这里很困惑。谢谢
解决方法
您需要在具有 async 管道的位置提供一个Observable。因此,您可以使用 gimsData 制作一个Observable,它将根据您的需要进行工作。
,我找到了没有管道或地图的解决方案。
import { Component } from '@angular/core';
import { request,gql } from 'graphql-request'
import { Observable,of } from 'rxjs';
const query = gql`
query{allLabels {
edges {
node {
labelName
labelType
}
}
}}
`
export interface labeli {
labelName: string,labelType: number
}
export interface nodei {
node: labeli
}
export interface datai {
allLabels: {
edges: []
}
}
@Component({
selector: 'app-tab1',templateUrl: 'tab1.page.html',styleUrls: ['tab1.page.scss']
})
export class Tab1Page {
constructor() {
this.searchgim()
}
ea: nodei[];
dli: labeli[] = [];
gimResults: Observable<any>;
async searchgim() {
console.log("searchgim function entered");
await request('http://localhost:5000/graphql',query).then(data => {
let ddatai: datai = data;
this.ea = ddatai.allLabels.edges;
this.ea.forEach(element => {
let eea: labeli
eea = element.node
this.dli.push(eea);
});
console.log(this.dli);
this.gimResults = of(this.dli);
});
}
}