У вас есть несколько проблем здесь.
let responseBody;
let postUploads = function() {
return this.http.post(url, uploadFile).pipe((response: any) => this.responseBody = response);
}
В этом коде, поскольку вы объявляете функцию с использованием синтаксиса function() { }
, this
будет ссылаться на саму функцию. this.http
будет неопределенным.
Кроме того, похоже, что вы пытаетесь установить локальную переменную responseBody
с выражением this.responseBody = response
.
Это также неправильное использование pipe
. Pipe принимает Rx JS операторов, таких как map
, tap
, et c. Он не принимает обратный вызов, подобный этому.
this.router(['/inbox], { queryParams: {file: responseBody} })
В этом коде вы не правильно вызываете маршрутизатор. Я подозреваю, что вы имеете в виду this.router.navigate(['/inbox], { queryParams: {file: responseBody} })
;
Фиксированная версия
Ваш код может быть упрощен до следующего:
this.http.post(url, uploadFile).subscribe((response: any) => {
this.router.navigate(['/inbox'], { queryParams: {file: response } });
});
Это подписывается на наблюдаемое и выполняет навигацию, когда ответ получен. Я не знаю, что такое тип данных response
, но если это какой-то блоб, вы, вероятно, не хотите помещать его в URL.