#angular #ionic-framework #rxjs #ionic4
#angular #ionic-framework #rxjs #ionic4
Вопрос:
Метод в моем классе webservice возвращает data, но когда я пытаюсь получить доступ к данным с помощью метода .subscribe в моем компоненте, он возвращает undefined.
Код метода в моем классе обслуживания. Я получаю данные в этом методе. И я могу видеть это с помощью console.log.
getData() {
return this.networkService
.getRequest("clienti/v1/session")
.pipe(
map(
(data) => {
console.log("getData");
console.log(JSON.stringify(data));
return data;
}
},
(error) => {
console.log("getData error");
console.log(error);
}
)
);
}
Код в моем классе component, я получаю неопределенное значение здесь, в console.log:
recoverData() {
this.dataService.getData().subscribe(
(data) => {
console.log("data");
console.log(data);
},
(error) => {
console.log(error);
}
);
}
Если кто-то знает, в чем проблема, пожалуйста, дайте мне знать.
Ответ №1:
Если вы не используете map
оператор для преобразования уведомления, вы могли бы использовать tap
operator вместо этого. Он также принимает обратный вызов с ошибкой, как вы пытаетесь сделать. Напротив, map
оператор не принимает функцию обратного вызова ошибки, поэтому журналы ошибок не будут распечатаны.
Попробуйте следующее
getData() {
return this.networkService.getRequest("clienti/v1/session").pipe(
tap(
(data) => {
console.log("getData");
console.log(JSON.stringify(data));
},
(error) => {
console.log("getData error");
console.log(error);
}
)
);
}
tap
выполняет только побочные эффекты (например, журналы консоли здесь) и не требует возврата какого-либо значения.