*NgFor不显示数据

Kes*_*vid 4 httprequest graphql ngfor angular

我正在编写我的第一个 Angular2 应用程序。

我有一个BankAccountService从后端服务器获取数据的服务,以及一个bank-account.component使用此服务来简单显示未排序的 accountNumbers 列表的服务。

通过 chrome devtool 进行调试,我能够看到数据已正确获取并存储在bankAccounts数据成员中,但由于某种原因,ul没有显示任何内容。

银行账户服务:

import { Injectable } from '@angular/core';
import {client} from '../app.module';
import gql from 'graphql-tag';
import {ObservableQuery} from "apollo-client";

@Injectable()
export class BankAccountService{
    bankAccounts: any[] = [];

    constructor() {
        this.queryBankAccounts();
    }

    queryBankAccounts(): any{
        let queryObservable: ObservableQuery = client.watchQuery({
            query: gql`
              {
                bankAccounts {
                  id
                  accountNumber
                  userOwners{
                    firstName
                  }
                 bankId
                  branchId
                  transactions{
                    amount
                    payerId
                    recipientId
                  }
                }
              }
            `,
            pollInterval: 50
        });

        let subscription = queryObservable.subscribe({
            next: ({ data }) => {
                this.bankAccounts = data;
            },
            error: (error) => {
                console.log('there was an error sending the query', error);
            }
        });
    }

    getBankAccounts(){
        return this.bankAccounts;
    }
}
Run Code Online (Sandbox Code Playgroud)

银行帐户.组件:

import {Component} from "@angular/core";
import {BankAccountService} from "../services/BankAccountService";

@Component({
    selector: 'bank-account',
    template: `<ul>
                    <li *ngFor="let account of bankAccounts">
                        {{account.accountNumber}}
                    </li>
               </ul>`,
    providers: [BankAccountService]
})
export class BankAccountComponent{
    bankAccounts: any[] = [];

    constructor(bankAccountService: BankAccountService){
        this.bankAccounts = bankAccountService.getBankAccounts();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人能阐明一些观点,我将非常感激,我似乎无法理解我的错误。

提前致谢

Ste*_*ota 6

这是因为异步函数正在获取数据,但您试图在获取数据之前显示它,因此,您正在迭代一个空数组。您可以通过不初始化数组(更改bankAccounts: any[] = [];bankAccounts: any[];)并用 包围<ul>标签来轻松解决此问题<div *ngIf="bankAccounts"></div>。这样,bankAccounts在获取数据之前,数组将是未定义的,并且*ngFor由于指令的原因,您的循环将在填充数组后立即执行*ngIf