1
votes

L'argument de type 'X' n'est pas attribuable au paramètre de type 'string'

J'obtiens donc cette erreur: Argument de type '{"username:": string; "mot de passe": chaîne; } 'n'est pas assignable au paramètre de type' string '

Mon code:

export class AuthloginService {



  private API_URL: 'https://myapi.com/api';

  constructor(public http: HttpClient) { }

  logarConta(email: string, password:string){
    return new Promise((resolve, reject) =>{
      var data = {
        name: name,
        email: email,
        password: password,
        message: 'Test',

      };

      this.http.post(this.API_URL + 'login', data)
        .subscribe((result: any) =>{
          resolve(result.json())
        }, 
        (message) =>{
          reject(message.json())
        })
    });

EDIT1: AuthloginService avec la fonction logarConta:

export class LoginPage implements OnInit {

  responseData : any;
  userData = {"username:":"", "password":""};

  constructor(private menu: MenuController, private authloginService: AuthloginService, public navCtrl : NavController ) {   
  }

  fazerLogin(){

     this.authloginService.logarConta(this.userData, 'login').then((result)=>{ // error here
      this.responseData = result;
      console.log(this.responseData);
      this.navCtrl.navigateForward('home')

     });


3 commentaires

Bonjour, pourriez-vous nous partager la définition de votre fonction AuthloginService.logarConta?


le premier argument de authLoginService.logarConta () est une chaîne et non un objet


@JohnGraham vient de modifier


3 Réponses :


2
votes

Cela devrait être:

this.authloginService.logarConta(this.userData.username, this.userData.password)
.then((result)=>{
  this.responseData = result;
  console.log(this.responseData);
  this.navCtrl.navigateForward('home')
 });

Mais, je ne suis pas sûr que cette méthode logarConta soit bonne. Parce que vous avez là un argument email et que votre userData = {"username:": "", "password": ""}; n'a pas de clé de messagerie. Vous devriez vérifier si cette approche est correcte.


0 commentaires

3
votes

Super merci pour le partage. Le problème est que vous avez un objet userData qui a 2 propriétés de chaîne nom d'utilisateur et mot de passe. Votre fonction logarConta attend 2 variables de chaîne email et mot de passe, mais vous ne passez qu'un objet. Vous pouvez résoudre ce problème en modifiant votre appel pour qu'il ressemble à ceci:

  this.authloginService.logarConta(this.userData.username, this.userdata.password).then((result)=>{ // error here
  this.responseData = result;
  console.log(this.responseData);
  this.navCtrl.navigateForward('home')

 });

Cela mappera correctement les propriétés de l'objet aux variables attendues par la fonction.


1 commentaires

Merci pour la réponse!



-1
votes
this.authloginService.logarConta(...this.userData, 'login')

0 commentaires