#angular
#угловатый #angular
Вопрос:
Я не буду делать некоторые преобразования для всех своих ответов:
post(url, body) {
return this.httpClient.post(url, body).pipe((result) => transform(result));
}
transform(data){
data = ...
return data;
}
Как я могу это сделать?
Комментарии:
1. angular.io/guide/http#intercepting-requests-and-responses
Ответ №1:
Для этого вам пришлось бы использовать map
.
import { map } from 'rxjs/operators';
...
post(url, body) {
return this.httpClient.post(url, body).pipe(map(result => this.transform(result)));
}
transform(data){
data = ...
return data;
}
Комментарии:
1. К вашему сведению, вы можете просто выполнить map(this.transform), поскольку map принимает функцию в качестве аргумента.
2. @bryan60 Это плохая идея практически в любом месте typescript, поскольку это не будет привязывать
this
контекст к функции преобразования.3. конечно, так и будет. это определено в этом контексте … также … ваша функция map должна быть чистой и не полагаться на внешнее состояние
4. @bryan60 Нет, это не привязано. Я предлагаю вам попробовать это самостоятельно.
5. Зависит от того, как вы определяете свою функцию, чувак. Проблема заключается в том, когда вы создаете или не создаете новую область, и это в первую очередь имеет значение при доступе к внедренным службам. По привычке я определю их следующим образом: fn = (args) => val если вы выполните fn (args) { return val }, то нет, вы создадите новую оценку. Но ваше общее утверждение о том, что вы создаете новую область путем привязки так, как я рекомендовал, неверно. Лучше понимать, когда создается область видимости, а когда нет, и действовать соответственно варианту использования.