Я пытаюсь понять, как происходит передача значений или ошибок от одного компонента к другому. В моем случае я хочу передать ошибку от службы к компоненту, и у меня есть вложенные методы.
Это будет фиктивный пример. Это метод в Сервисе, который выдает ошибку.
public serviceMethod(value1: Class1): Observable<Interface1>{
return new Observable(result => {
this.method1(class1) // this method throws an error and returns an number
.subscribe(decimalValue => this.method2(decimalValue) // this method does an error check and returns an Interface1 type
.subscribe(value2 => this.method3(value2, result, decimalValue)), error1 => throwError(error1)
)
})
}
Поскольку method1 выдает ошибку, error1 также будет выброшена. Теперь я хочу передать как-либо значение или ошибку из сервиса методу в другом Компоненте.
Вот как будет реализован метод в другом компоненте:
public methodInTheComponent = async () =>{
this.service.serviceMethod(valueOfClass1).subscribe(result => concole.log(result), error2 => console.log(error2));
}
Теперь, когда я запускаю это, я просто получаю выходные данные с ошибкой1, но не с ошибкой2.
Причина этого заключается в том, что ошибка выдается из метода 1, и он не достиг других методов 2 и 3, чтобы вернуть результат ошибки.
Одно решение, о котором я подумал, это используя логическую переменную в сервисе. Например, errorThrown = true , а затем передать это компоненту. Тогда я мог бы выполнить проверку if в подписке.
Если errorThrown имеет значение true, error2 также должен быть выдан.
Я не уверен, что это хорошее решение! Одна проблема в том, что я не знаю, как отправить это errorThrown в Компонент!
Любое предложение или идея о том, что может быть возможным хорошим решением?