javascript - Förväntade 2 argument, men fick 1.ts(2554)


God morgon vänner, ursäkta besväret, jag övar för att lära mig och jag höll på att logga in, men problemet är att jag försöker ansluta det till ett API och det upprättar inte anslutningen, det ger mig ett superkonstigt fel i login-komponenten. Här bifogar jag login.component

import { Component, } from '@angular/core';
import { AppserviceService } from '../../services/appservice.service';
import { NgForm } from '@angular/forms';
import { AppsResp } from '../../interfaces/interfaces';
import { FormsModule } from '@angular/forms';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
})
export class LoginComponent {

  email:string ='';
  password:string='';

  constructor(public AppserviceService: AppserviceService) { }

  login() {
    const user = {email: this.email, password: this.password};
    this.AppserviceService.login(user).subscribe( data => {
      console.log(data);
    });
  }
}

felet som passar är följande_ "Förväntade 2 argument, men fick 1.ts(2554) appservice.service.ts(15, 26): Ett argument för 'password' angavs inte."

Här bifogar jag apptjänstens service, vilket är där ursprunget till felet markerar mig

import { HttpClient } from '@angular/common/http';
import { Injectable, Query } from '@angular/core';
import { Observable } from 'rxjs';
import { AppsResp, Registro } from '../interfaces/interfaces';

@Injectable({
  providedIn: 'root'
})
export class AppserviceService {

  constructor(private http: HttpClient) { }



  login ( email: string, password: string ){
const body = {email,password}
return this.http.post <AppsResp>("http://apitest.e-bango.com/api/auth/login" , body );
  }

  }

På samma sätt kan jag inte hitta den rätta logiken för att infoga registerkomponenten i min tjänst, kan du hjälpa mig? och förklara så detaljerat som möjligt vad jag gör fel? Tack

Svar #1

Jag tror att du har två sätt att lösa detta problem

1: Din inmatning till funktionen login är inte korrekt

 login() {
    const user = {email: this.email, password: this.password};
    this.AppserviceService.login(user).subscribe( data => {
      console.log(data);
    });
  }

Byt till

 login() {
    this.AppserviceService.login(email: this.email, password: this.password).subscribe( data => {
      console.log(data);
    });
  }

2: Ändra funktionen login

  login ( email: string, password: string ){
const body = {email,password}
return this.http.post <AppsResp>("http://apitest.e-bango.com/api/auth/login" , body );
  }

till

  login ( {email: string, password: string }){
const body = {email,password}
return this.http.post <AppsResp>("http://apitest.e-bango.com/api/auth/login" , body );
  }

Svar #2

bara ändra inloggningsmetod i appserviceService

login ( body ){
  return this.http.post <AppsResp>("http://apitest.e-bango.com/api/auth/login" , body );
 }