Another 'context' problem.
I have this very function called 'isInDatabase()'. It is supposed to be a custom validator, I got inspiration on 'angular/validator' Github page.
As you can see I'm calling the 'this.clientService.checkElement' function. And as it is declared, I get the error: 'Cannot read property 'checkElement' of undefined'.
Hint 1: (?)
According to what I have already seen and read, the context has changed, even if I use an arrow function, because this arrow function is wrapped in another function.
Hint 2: (?)
I have tried to implement this : constructor (private clientService: ClientService) {}, but then, the error was : error TS2339: Property 'clientService' does not exist on type 'typeof CustomValidators'.
Here is the code :
export class CustomValidators {
private static clientService: ClientService;
static isInDatabase(elementType: string): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
this.clientService.checkElement(control.value, elementType)
.subscribe(() => {
return {isInDB: true};
},
(error) => {
return {isInDB: true};
});
return (null);
};
}
}