Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何使用wait/async获取此数据?_Angular - Fatal编程技术网

Angular 如何使用wait/async获取此数据?

Angular 如何使用wait/async获取此数据?,angular,Angular,我正在从组件调用服务。该服务调用异步返回数据的外部服务。我的组件需要知道何时返回数据,以便获得数据的句柄。我想我在过去用async/await做过类似的事情,但在下面的例子中我似乎忘记了一些东西。知道这里的差距是什么吗 my.component.ts: constructor(private afdb: AngularFireDatabase, private ts: TestService) { this._ts = ts; this._afdb = afdb; th

我正在从组件调用服务。该服务调用异步返回数据的外部服务。我的组件需要知道何时返回数据,以便获得数据的句柄。我想我在过去用async/await做过类似的事情,但在下面的例子中我似乎忘记了一些东西。知道这里的差距是什么吗

my.component.ts:

constructor(private afdb: AngularFireDatabase,  private ts: TestService)
{
    this._ts = ts;
    this._afdb = afdb;
    this.loadData();
}

async loadData()
{
    this._vms = new TestService(this._afdb);        
    this.testData = await this._ts.getTestData();
}
test.service.ts:

public getTestData()
{
    this._afdb.list('TestData').snapshotChanges().map(actions => {
        return actions.map(action => ({ key: action.key, ...action.payload.val() }));
    }).subscribe(items => {
        return items;
    }); 
}

我认为您需要的是异步管道,您可以在模板中使用它。如果组件类中的属性是可观察的,则可以使用异步管道将该属性添加到组件的模板中


有三种方法可以解决这个问题

  • 订阅服务并在数据可用后使用ngIf呈现组件

    this.yourService.yoursfunction.subscribe(值=>{ this.displayValue=值; this.displayValueAvailable=true; })

  • 在圣殿里你可以做到

    <div *ngIf="displayValueAvailable"></div>
    
    
    
  • 您可以使用异步管道 您可以让模板知道数据是异步的,并在数据可用时使用异步管道进行渲染。 您可以在这里查看文档

  • 将组件值设置为空,即如果是数组

    ar:Array=[]


  • 在subscribe函数中设置这个数组的值。一旦该值可用,角度变化检测就应该解决其余问题:)希望这有帮助。

    您有什么问题?我正在尝试确保在将数据设置为组件上的成员变量之前从服务返回数据,但我上面的代码没有这样做。接下来会发生什么?你的问题很不清楚,这就是为什么到目前为止它得到了4张反对票。这是一种常见的情况,对吗?我需要将我的外部服务调用委托给ng服务。服务调用异步返回数据,但在尝试将数据设置为组件成员之前,我需要确保我的组件具有返回数据的句柄。如果有人能够提供一些见解,订阅可观察对象可能是另一种方法