在进行我的第一次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)
。我该怎么做?
答案 0 :(得分:4)
现在我知道它会是:
return Observable.of({
name: 'default name',
ean: '',
price: 0,
qty: 0,
imageUrl: '',
_id: ''
});