Angular AsyncValidator с противодействием и начальным значением

Я добавил debounce в свой асинхронный валидатор, на SO и Github есть решения, подобные этому (https://github.com/angular/angular/issues/13200).

У меня проблема в том, что если форма уже имеет значение при создании, все решения, которые я нашел, не работают.

если поле пусто, это работает:

return control
    .valueChanges
    .debounceTime(400)
    .take(1)
    .distinctUntilChanged()
    .switchMap(value => this.systemService.getInstances({ name: value }))
    .map((data) => {
        if (CHECKISTRUE)) {
            return { nameAlreadyExists: true };
        } else {
            return null;
        }
    });

если есть начальное значение, control.valueChange не определено. Моя попытка исправить эту проблему:

if (!control.valueChanges) {
    return Observable.of(null);
}

к сожалению, статус остается на рассмотрении.

все результаты Google приводят к решению для пустых полей, которое не помогает.

Почему вы используете take(1)? Это автоматически закроет наблюдаемое после первого выброса.

Markai 15.03.2018 11:08

без статуса остается на рассмотрении навсегда: github.com/angular/angular/issues/13200#issuecomment-3304048‌ 20

Andre 15.03.2018 11:24

У меня та же проблема, элемент управления угловой формы с начальным значением и асинхронный валидатор. элемент управления всегда находится в состоянии ОЖИДАНИЕ. Вы нашли здесь какое-нибудь решение?

Da-Vi 19.06.2020 15:43

Я забыл о проблеме и о том, в каком проекте она у меня была. но позволь мне завтра проверить свои проекты, может быть, я найду его. Я предполагаю, что проблема была в совершенно другой части кода ...

Andre 21.06.2020 19:30
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
4
162
0

Другие вопросы по теме