je construire un service de validation pour mon formulaire d'inscription et l'une des méthodes statiques vérifie si l'e-mail entré est disponible en appelant mon API suivantes:données Angular2 de retour du service de validation après Http appel
static emailAvailable(control){
let injector = ReflectiveInjector.resolveAndCreate([HTTP_PROVIDERS]);
let http = injector.get(Http);
let valid = "E-mail is available";
http.post('https://secretapi.com/email', JSON.stringify({ email: control.value }))
.map((res: Response) => res.json())
.subscribe(function(result){
if(result.success){
valid = result.success; //The console.log on the line below is correct, the one at the bottom of the script never changes.
console.log(valid);
return null; //Doesn't do anything?
}else{
valid = result.error; //The console.log on the line below is correct, the one at the bottom of the script never changes.
console.log(valid);
return { 'invalidEmailAddress': true }; //Doesn't do anything, just like the return above
}
});
console.log(valid); //Output always "E-mail is available"
}
Il devrait retourner "null" au validateur de formulaire quand l'email est disponible. Le dernier fichier console.log en bas devrait afficher le message qu'il reçoit dans l'appel d'abonnement. Cela n'arrive pas et je ne sais pas pourquoi. Pour une raison quelconque, tout ce qui se passe dans l'appel d'abonnement est contenu là et n'atteint jamais le validateur. Que devrais-je changer? Je n'ai aucune idée et j'ai cherché sur le web pendant des heures maintenant.