【发布时间】:2018-08-14 18:24:27
【问题描述】:
考虑以下代码 Angular 5 + old rxjs
this.measurementUnitsService.GetAll().subscribe(
res => {
this.measurementUnits = res.map(x => new MeasurementUnit(x));
}
)
我得到一个对象列表,并为每个对象创建一个新的强类型类。
我将如何在 angular 6 + rxjs 6 中做同样的事情 我的尝试。
this.measurementUnitsService.GetAll().pipe<MeasurementUnit[]>(mergeMap(x => new MeasurementUnit(x))).subscribe(
res => {
this.measurementUnits = res;
}
)
不幸的是,它会产生错误Type 'MeasurementUnit[]' has no properties in common with type 'Partial<MeasurementUnit>'.
MeasurementUnit以防万一
export class MeasurementUnit {
Id: number;
CreatedDate: Date;
ModifiedDate: Date;
Disabled: boolean;
DisabledDate: Date;
Name: string;
Description: string;
ParentId: number;
public constructor(item: Partial<MeasurementUnit>) {
//item.EstablishedDate = new DatePipe('en-US').transform(item.EstablishedDate, "yyyy-MM-dd");
Object.assign(this, item);
}
}
【问题讨论】:
-
您使用的是
mergeMap而不是map。是故意的吗? -
如果我没看错,你根本不需要改变任何东西——你只是在映射一个数组,而不是一个 observable,而 RxJS 6 与此无关。
-
@Niladri 任何一个都会产生相同的错误。当我尝试不同的选项时,
map似乎产生了更严重的错误,所以我将其更改为mergeMap。现在他们都包皮过同样的错误。 -
this.measurementUnits的类型是什么?是Partial<MeasurementUnit> -
@JohnMontgomery 啊,这是有道理的。我对整个可观察模式有点陌生,我认为 map 总是与 rxjs 有关。
标签: javascript angular rxjs angular6 rxjs6