将 rxjs 5 地图转换为 rxjs 6 地图
Converting rxjs 5 map to rxjs 6 map
考虑以下代码 Angular 5 + older rxjs
this.measurementUnitsService.GetAll().subscribe(
res => {
this.measurementUnits = res.map(x => new MeasurementUnit(x));
}
)
我正在获取一个对象列表,并为每个对象创建一个新的强类型 class。
我将如何在 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);
}
}
你有 Observable<MeasurementUnit[]>
而不是 Observable<MeasurementUnit>
。
这意味着,当 observable 发出一个值时,它将是一个数组而不是单个值。因此,您需要普通的 array
地图,而不是 Observable
地图。
就这样:
this.measurementUnitsService.GetAll()
.pipe(
map(array => array.map(x => new MeasurementUnit(x)))
).subscribe(res => this.measurementUnits = res);
考虑以下代码 Angular 5 + older rxjs
this.measurementUnitsService.GetAll().subscribe(
res => {
this.measurementUnits = res.map(x => new MeasurementUnit(x));
}
)
我正在获取一个对象列表,并为每个对象创建一个新的强类型 class。
我将如何在 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);
}
}
你有 Observable<MeasurementUnit[]>
而不是 Observable<MeasurementUnit>
。
这意味着,当 observable 发出一个值时,它将是一个数组而不是单个值。因此,您需要普通的 array
地图,而不是 Observable
地图。
就这样:
this.measurementUnitsService.GetAll()
.pipe(
map(array => array.map(x => new MeasurementUnit(x)))
).subscribe(res => this.measurementUnits = res);