Как передать дополнительные параметры в оператор карты RxJS - PullRequest
0 голосов
/ 27 ноября 2018

В приложении Angular я использую операторы HttpClient и RxJS для выполнения некоторых вызовов API.Например:

return this.httpClient.put(url, JSON.stringify(treeOptions))
        .pipe(
        map(this.extractTreeData),
        catchError(this.handleError)
        );

Метод extractTreeData в основном изменяет некоторые свойства, возвращаемые API:

private extractTreeData(res: any) {
    let apiTree = res.data;  // The tree comes inside the 'data' field
    let newTree : any;

    try {
        let str = JSON.stringify(apiTree);

        str = str.replace(/"children"/g, '"items"');
        str = str.replace(/"allowdrag"/g, '"allowDrag"');

        newTree = JSON.parse(str);        
    } catch(e) {
        // Error while parsing
        newTree = null;
    }

    return newTree || {};
}

Мне нужно сделать еще некоторые изменения в зависимости от типа дерева.Как я мог передать этот тип сопоставленному методу?Я имею в виду:

[...]
.pipe(
  map(this.extractTreeData), <== HOW TO PASS VARIABLE 'treeType' TO extractTreeData
[...]

Заранее спасибо,

1 Ответ

0 голосов
/ 27 ноября 2018

Строка

map(this.extractTreeData)

является эквивалентом

map(tree => this.extractTreeData(tree))

Если вы используете расширенную форму, вы можете затем обновитьчтобы передать больше параметров следующим образом:

map(tree => this.extractTreeData(tree, treeType))

Трудно дать вам полный ответ, так как вы не показываете, откуда исходит treeType.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...