由于对对象和选项的异步调用,下拉列表值未选中

时间:2017-11-29 21:35:45

标签: javascript angular asynchronous dropdown

我有一个角度4形式,用于添加/更新以角度4编写的对象。 该表单有几个下拉列表,其中的选项来自API调用。 更新对象时,在ngInit上,我按ID获取现有对象,并获取下拉列表的选项。 但下拉列表并不总是加载预先选择的选项。 我知道原因是因为所有API调用都是异步的,当加载下拉列表选项之前获取对象数据时,将不会选择选项。

处理这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您应该使用forkJoin()运算符,它允许我们获取Observable列表并执行它们并行。我们不会单独订阅这些Observable中的每一个。相反,我们订阅了#34;容器" forkJoin()创建的可观察对象。

参见我的例子:

 ngOnInit() {
    const cart = this.stockInventoryService.getCartItems();  // Http request
    const products = this.stockInventoryService.getProducts();  // Http request

    Observable.forkJoin(cart, products)
    .subscribe(([cart, products]: [Stock[], Product[]]) => {
      // ... handle values...
    });