У меня есть поле ввода, которое я хочу проверить.
Я использую пользовательский валидатор для проверки действительности значения этого поля ввода.
В пользовательском валидаторе я делаювызов покоя для конечной точки со значением поля ввода, чтобы проверить, является ли введенное значение действительным.
Проблема заключается в том, что вызов getCatent httpClient работает асинхронно, к тому времени, когда результаты проверки возвращаются из остальныхAPI.Валидаторы поля ввода выходят, и проверка не работает согласно ожиданиям.
Есть ли способ сделать http-вызов синхронно.
мой код вызова httpClient внутри пользовательского валидатора:
labelNameValidators.ts:
import {FormControl } from '@angular/forms';
export function labelNameValidators(control: FormControl) {
if(control.value!=null) {
this.labelService.checklabelNameFormat(control.value)
.subscribe(
(data) => {
if (data === 'true') {
console.log('success', data);
return {'labelMsg': { 'message' : data}};
}
else {
console.log('failure', data);
return {'labelMsg': { 'message' : data}};
}
},
(err) => {
console.log('error', err);
return null;
}
)
}
}
Label.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from 'src/environments/environment';
@Injectable({
providedIn: 'root'
})
export class LabelService {
private nameFormatCheckApi = environment.nameFormatCheckApi;
constructor( private http: HttpClient ) { }
checklabelNameFormat(name: string){
return this.http.get(this.nameFormatCheckApi + '?name='+name);
}
}