【问题标题】:Argument of type 'X' is not assignable to parameter of type 'string'“X”类型的参数不能分配给“字符串”类型的参数
【发布时间】:2019-09-12 14:53:18
【问题描述】:

所以我收到了这个错误: '{ "username:": string; 类型的参数“密码”:字符串; }' 不可分配给“字符串”类型的参数

我的代码:

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')

     });

EDIT1:使用函数 logarConta 的 AuthloginService:

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

【问题讨论】:

  • 您好,您可以和我们分享一下您的 AuthloginService.logarConta 函数的定义吗?
  • authLoginService.logarConta() 的第一个参数是字符串而不是对象
  • @JohnGraham 刚刚编辑

标签: angular typescript ionic-framework


【解决方案1】:
this.authloginService.logarConta(...this.userData, 'login')

【讨论】:

    【解决方案2】:

    非常感谢分享。问题是你有一个对象userData,它有两个字符串属性用户名和密码。您的 logarConta 函数需要 2 个字符串变量电子邮件和密码,但您只传递了 1 个对象。您可以通过将调用更改为如下所示来解决此问题:

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

    这会将对象的属性正确地映射到函数所期望的变量。

    【讨论】:

    • 感谢您的回复!
    【解决方案3】:

    这应该是:

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

    但是,我不确定这个logarConta 方法是否好用。因为您有一个 email 参数,而您的 userData = {"username:":"", "password":""}; 没有电子邮件密钥。您应该检查这是否是正确的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-21
      • 2021-10-13
      • 2018-06-24
      • 2019-01-27
      • 1970-01-01
      • 2016-04-16
      • 2021-09-04
      相关资源
      最近更新 更多