У меня есть пользовательский асинхронный валидатор , который замораживает мое приложение.Протестировано в Chrome и Firefox .
Это происходит после ввода прибл.30 символов, что означает, что Validator был , называемый ок.30 раз .
Похоже, валидатор не разрушается и удерживает память .
# my.component.ts
// ...
this.form = this.formBuilder.group({
email: ['', [Validators.required, Validators.email], EmailTakenValidator(myApiService)],
});
# email-taken.validator.ts
import { ValidatorFn, AbstractControl, Validator } from '@angular/forms';
import { RegistrationService } from '../services/myApiService';
import { Observable } from 'rxjs/Observable';
export function EmailTakenValidator(myApiService:MyApiService) {
return control => new Promise((resolve, reject) => {
if (!control.value || !RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(control.value)) {
// invalid email -> skip
return resolve({ EmailTakenValidator: {value: control.value} })
}
myApiService.emailTaken(control.value).subscribe(isTaken => {
if (isTaken) {
return resolve({ EmailTakenValidator: {value: control.value} })
} else {
return resolve(null);
}
}, () => {
return resolve({ EmailTakenValidator: {value: control.value} })
})
})
}
Я проверил код без myApiService
Все та же проблема.
Есть идеи?Заранее спасибо!
Редактировать: Кажется, это память.Я просто спровоцировал ошибку и некоторое время игнорировал замороженный браузер.Используемая память увеличилась с 210 до 470 мб!