Можно отобразить другой результат карты, rxjs? - PullRequest
0 голосов
/ 02 октября 2019

Я использую Angular 7 и у меня возникают проблемы с пониманием работы синтаксиса канала.

Вот мой код:

    tests: Row[]
    public getTest() : Observable<Row[]> {
      return this.http.get<Test[]>(this.testUrl)
      .pipe(
        map((tests) => {
          tests.map(test => test.rows = this.tests)
          return this.tests;
    }))
  }

Вот моя модель:

export interface Test {
  total_rows: number;
  offset: number;
  rows: Row[];
}

export interface Row {
  id: string;
  key: Key;
  value?: any;
}

export interface Key {
  name: string;
}

Вот JSON:

{
  "total_rows": 2,
  "offset": 0,
  "rows": [
    {
      "id": "54229d6897e1d1c7d603428a850081d5",
      "key": {
        "name": "test1"
      },
      "value": null
    },
    {
      "id": "54229d6897e1d1c7d603428a85010e03",
      "key": {
        "name": "test2"
      },
      "value": null
    }
  ]
}

И данные, которые я хотел бы получить: массив строк

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 02 октября 2019

В вашем примере один метод относится к Observal.map(), а другой является оригинальным массивом Javascript .map().

Не уверен, что выпытаются достичь, если вы просто хотите получить массив Rows и присвоить ему this.tests, вы можете просто преобразовать Observable с помощью Observable.map(), и нет необходимости использовать массив JS .map(). Не забудьте подписаться на вашу заметку:

public getTest() : Observable<Row[]> {
  return this.http.get<Test[]>(this.testUrl)
  .pipe(
    map((tests) =>  tests.rows)))

//remember to subscribe
this.getTest().subscribe(results => this.tests = results) //assign the rows to local this.tests
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...