【问题标题】:Expected 2 arguments, but got 1.ts(2554)预期 2 个参数,但得到 1.ts(2554)
【发布时间】:2022-08-24 06:43:38
【问题描述】:

朋友们早上好,很抱歉给我带来不便,我正在练习学习,我正在登录,但问题是我试图将它连接到一个 api 并且它没有建立连接,它给了我一个超级奇怪的错误在登录组件中 这里我附上 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);
    });
  }
}

适合的错误如下_ \"预期 2 个参数,但得到 1.ts(2554) appservice.service.ts(15, 26): 未提供 \'password\' 的参数。\"

在这里我附上应用服务服务,这是错误的来源标记我的地方

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 );
  }

  }

同样,我找不到在我的服务中插入注册表组件的正确逻辑,你能帮帮我吗?并尽可能详细地解释我做错了什么?谢谢

  • 查看签名login ( email: string, password: string ),它应该被称为this.AppserviceService.login(user.email, user.password)。您最初尝试的方式就像,当login( arg1, arg2 ) 需要两个参数时,您有arg1 = {user: \"user1@some.domain\", password: \"password1\"}arg2 not provided,这是行不通的。相反,它应该是arg1 = \"user1@some.domain\"arg2 = \"password1\"。要从 user 对象中获取这些字符串,请分别使用 user.email 和 user.password。

标签: javascript angular typescript


【解决方案1】:

我认为您有两种方法可以解决此问题

1:您输入的功能登录不正确

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

改成

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

2:更改登录功能

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

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

【讨论】:

    【解决方案2】:

    只需更改 appserviceService 中的登录方法

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

    【讨论】:

      【解决方案3】:

      这是因为您来自 AppserviceService 的 .login 接受或排除 2 个参数,这是电子邮件和密码。但是你要把用户对象放在那里

      尝试这个

      export class LoginComponent {
        email:string ='';
        password:string='';
      
        constructor(public AppserviceService: AppserviceService) { }
      
        login() {
          this.AppserviceService.login(this.email, this.password).subscribe( data => {
            console.log(data);
          });
        }
      }
      

      【讨论】:

        【解决方案4】:

        谢谢你的帮助,我已经尝试了你所有的解决方案,但其中任何一个都有效:-(this is mi login component.ts

        我仍然在发生这个问题,只有密码出现,如果我切换电子邮件和密码位置然后电子邮件有问题而不是密码,你能告诉我我还能做些什么吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-18
          • 1970-01-01
          • 1970-01-01
          • 2019-12-28
          • 2020-08-31
          • 2020-04-22
          • 1970-01-01
          • 2018-09-07
          相关资源
          最近更新 更多