проблема преобразования flatMap из Angular 4 в Angular 9 - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующий код в Angular 4 (все в порядке)

 public resolve(): Observable<GridViewDtcConfig> {

        const permissionResponse = this.flowsService.getPermissions();

        return permissionResponse.flatMap((permissions) => {
            const result = new GridViewDtcConfig();

            result.title = 'Outbound Flows';
            result.hideCompletedColumn = false;
            result.permissionResponse = permissions;
            result.successFlag = true;

            return Observable.of(result);
        });
    }

, пока у меня есть:

import { Observable, of } from 'rxjs';
import { flatMap } from 'rxjs/operators';
...... 
public resolve(): Observable<GridViewDtcConfig> {

    const permissionResponse = this.flowsService.getPermissions();

    return permissionResponse.pipe(flatMap((permissions) => {
      const result = new GridViewDtcConfig();

      result.title = 'Outbound Flows';
      result.hideCompletedColumn = false;
      result.permissionResponse = permissions;
      result.successFlag = true;

      return of(result);
    }));
  }

, но мне это не нравится плоской карты Может кто-нибудь посоветовать, как я должен восстанавливать исходный код, чтобы соответствовать V9.

Я получаю следующую ошибку:

const result: GridViewDtcConfig

(TS) Тип "Observable" не может быть присвоен типу "Observable". Типу "{}" не хватает следующих свойств из типа "GridViewDtcConfig": title, hideCompletedColumn, observableData ,missionResponse, successFlag

1 Ответ

0 голосов
/ 06 марта 2020

Вам не нужно of, я бы просто использовал map.

Попробуйте это:

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators'; // use map instead and you won't need of
...... 
public resolve(): Observable<GridViewDtcConfig> {

    const permissionResponse = this.flowsService.getPermissions();

    return permissionResponse.pipe(map((permissions) => {
      const result = new GridViewDtcConfig();

      result.title = 'Outbound Flows';
      result.hideCompletedColumn = false;
      result.permissionResponse = permissions;
      result.successFlag = true;

      return result;
    }));
  }
...