从watchQuery函数GraphQL返回Array Observable,但给出* ngFor错误

时间:2017-05-20 08:14:41

标签: angular rxjs graphql apollo apollo-client

我得到了[错误:NgFor仅支持绑定到像数组这样的Iterables。 ]

我做错了什么?

diff wait-for-it.sh <( strm2fnct wait-for-it.sh < wait-for-it.sh )

组件代码:

View Code : 
<div *ngFor="let item of data| async" class="wide-box">

调用watchQuery函数并在map函数中执行一些后期处理,并返回Observable of Array,

public data : ApolloQueryObservable

从服务器重新提取数据

public feed(){
    var a = gpl`
    query user($user: UserInput){
    user(user:$user){
        first_name
        lync{
            artist
            title
            albumArtUrl
            listenon
            date
            author{
                username
                email
            }
        }
        following{
            lync {
                artist
                title
                albumArtUrl
                listenon
                date
                author{
                  username
                  email
                }
            }
        }
    }
}
`;
this.data = this.apollo.watchQuery({
    query: a,
    variables: {
            user: {
                email: window.localStorage.getItem('email')
            }
        }
    }).map((x:any)=>x.data.user[0]).map(x=>{
        this.feedItem = []  
        if(x.lync.length){
            x.lync.map(l=>{
                if(l!=undefined){
                    this.feedItem.push(l)
                }
            })
        }
        if(x.following){
            x.following.map(y=>{
                if(y.lync.length != 0){
                    y.lync.map(l=>{
                        if(l!=undefined){
                            this.feedItem.push(l)
                        }
                    })
                }
            })
        }

        console.log(this.feedItem, "feedItem")
        return ApolloQueryObservable.of(this.feedItem)
    })

1 个答案:

答案 0 :(得分:0)

我不了解发生了什么,但我发现watchQuery中的最后一个map运算符没有返回任何对象。

因此,this.data可能会填充null