Здравствуйте, я создаю angular asyn c валидатор, который должен ждать ответа от HttpRequest от службы.
Мне нужна функция для возврата наблюдаемой информации, возвращаемой вызов http.
Если попробуйте разные коды:
1 - Это не работает, потому что a не определено, потому что httprequest не завершился, когда функция вернула a.
searchValue(controlName, controlValue){
this.cts.getByParam(controlName, controlValue) // Call a function on the service that make a
HTTPrequest and make a subject emit a value.
let a
this.cts.dataGetByParamSubject.subscribe(res=>{
a=(res)
})
return of(a)
}
2 - не работает, потому что не возвращает никакого значения.
searchValue(controlName, controlValue){
this.cts.getByParam(controlName, controlValue) // Call a function on the service that make a
HTTPrequest and make a subject emit a value.
let a
this.cts.dataGetByParamSubject.subscribe(res=>{
a=(res)
return of(a)
})
}
3 - возвращает подписку, а не наблюдаемую.
searchValue(controlName, controlValue){
this.cts.getByParam(controlName, controlValue) // Call a function on the service that make a
HTTPrequest and make a subject emit a value.
let a
return this.cts.dataGetByParamSubject.subscribe(res=>{
a=(res)
return of(a)
})
}
4 - Возвращает заметное, что когда вы отображаете его, res является подписчиком, и я потерялся.
searchValue(controlName, controlValue){
this.cts.getByParam(controlName, controlValue) // Call a function on the service that make a
HTTPrequest and make a subject emit a value.
let a
return of(this.cts.dataGetByParamSubject.subscribe(res=>{
a=(res)
return of(a)
})
})
Служебная сторона:
getByParam(property, value): Observable<HttpResponses> {
let data
let params = new HttpParams()
.set('schema', this.tipoConfiguracion.codigo)
.set('property', property)
.set('value', value)
this.http.get<HttpResponses>(this.apiUrl + 'validation', {params: params}).subscribe(res=>{
this.dataGetByParamSubject.next({message: res.message, data: res.data, error: res.error})
})
return
}
Как я могу это сделать Работа? Спасибо за вашу помощь.