立即解决了Observable - 相当于$ q.when()

时间:2016-09-29 14:24:09

标签: asynchronous angular observable

在进行我的第一次Angular 2 CRUD练习时,我正在尝试重新使用我的编辑表单来添加新的和编辑现有对象。

我有这个不正确的代码:

this._route.params.forEach((params: Params) => {
      let id = params['id'];
      if (id) {
        this._productService.getProduct(id)
          .subscribe(
            product => this.product = product,
            error => this.errorMessage = <any>error
          );
      } else {
        this.product = {
          name: 'default name',
          ean: '',
          price: 0,
          qty: 0,
          imageUrl: '',
          _id: ''
        };
      }

    });

    (<FormGroup>this.registerForm).setValue(this.product, {onlySelf: true});

......难怪这不起作用 - 因为if的一部分是同步的,另一部分是异步的。

我想优化代码并将静态默认对象模板转换为来自立即解析的Observable的值 - 基本上相当于$q.when(myVar)。我该怎么做?

1 个答案:

答案 0 :(得分:4)

现在我知道它会是:

      return Observable.of({
          name: 'default name',
          ean: '',
          price: 0,
          qty: 0,
          imageUrl: '',
          _id: ''
      });