通过角材料的连接函数返回之前,在可观察数据中添加属性

时间:2018-11-23 14:01:04

标签: angular angular-material

我正在使用角度材料表。内部连接功能我正在返回一个可观察的类型的患者。但是我必须在返回之前更新PatientData的值。返回之前,我必须添加“ Active属性,如果病人ID存在于redrows数组中。

数据表的连接功能

connect(): Observable<Patient[]> {
    const patientData = this.patientService.getPatient();

    patientData.subscribe((jsonData) => {
      const redRows = this.getAge(jsonData);
      for (let a = 0; a < jsonData.length; a++) {
        if (redRows.includes(jsonData[a].id)) {
          jsonData[a].active = 'Active';
        } else {
          jsonData[a].active = 'Not Active';
        }
      }
      return jsonData;

    },
      (err) => console.error(err),

      () => console.log('observable complete'));
    return patientData;
 }

1 个答案:

答案 0 :(得分:0)

修改数据并从subscription返回不会更改可观察到的内容,在subscribe()中不会connect()。使用rxjs中的map运算符来修改数据。

import { map} from "rxjs/operators"

connect(): Observable<Patient[]> {
    return this.patientService.getPatient().pipe(
        map((jsonData) => {
            const redRows = this.getAge(jsonData);
            for (let a = 0; a < jsonData.length; a++) {
                if (redRows.includes(jsonData[a].id)) {
                    jsonData[a].active = 'Active';
                } else {
                    jsonData[a].active = 'Not Active';
                }
            }
            return jsonData;
        })
    )
}

subscribeconnect(),无论您在哪里使用它。