angular - 类型 'number'的参数不能分配给 'string'类型的参数。将旧项目导入新项目时

标签 angular typescript compiler-errors

将完成的项目导入另一个项目后,我突然收到此错误:

ERROR in src/app/avior/users/users.component.html:43:79 - error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.

43         <form [formGroup]="userForm" class="form-signin" (ngSubmit)="onSubmit(selectedUser._id,this.userForm.value)">

我的onSubmit函数如下所示:
  onSubmit(id: string, data: User) {
      this.aviorBackend.putUser(id, data)
      .subscribe(
        res => {
                console.log('Benutzer erneuert.');
                console.log(id);
                console.log(data);
                console.log(res);
                this.selectedUser = res;
               },
               error => {
                console.log('Error while deleting user: ', error);
                        }
                );
                      }

我在旧项目中的原始代码可以正常运行,这怎么会出错?
如果我写错了,请纠正我,但是this.userForm.value似乎是一个数字,需要将其转换为字符串吗?

更新
遵循建议后,我仍然会收到此错误:
    ERROR in src/app/avior/users/users.component.html:59:83 - error TS2345: Argument of 
type 'number' is not assignable to parameter of type 'string'.

    59     <button class="btn btn-danger btn-block" type="submit" (click)="deleteUserBtn(selectedUser._id)">Löschen</button>

 ~~~~~~~~~~~~~~~~

更新2
用户界面:
import { Role } from './role';

// was class and not interface!
export interface User {
    _id: number;
    mandator?: number;
    loginId: string;
    lastname: string;
    firstname: string;
    password: string;
    eMail: string;
    group?: string;
    role?: Role;
    active?: boolean;
    token?: string;
}

最佳答案

您的onSubmit方法采用2个参数。

onSubmit(id: string, data: User)

您已输入为idstring

在模板中,您使用以下命令调用onSubmit:

(ngSubmit)="onSubmit(selectedUser._id,this.userForm.value)"
selectedUser._idnumber
所以你得到了错误

Argument of type 'number' is not assignable to parameter of type 'string'



因为您要将数字传递给接受字符串的方法。



更改onSubmit方法以将id键入为number:

onSubmit(id: number, data: User) { // changed string to number

来自您的评论

需要更改interface以反射(reflect)数据的形状:

export interface User {
    _id: string; // this should be a string
    mandator?: number;
    loginId: string;
    lastname: string;
    firstname: string;
    password: string;
    eMail: string;
    group?: string;
    role?: Role;
    active?: boolean;
    token?: string;
}

关于angular - 类型 'number'的参数不能分配给 'string'类型的参数。将旧项目导入新项目时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60335709/

相关文章:

html - 单击鼠标时将文本与光标一起拖动

c++ - 重新声明为另一种符号错误(c++)

c - glibc中带有__NR_前缀的符号是什么?

compiler-errors - 即使已安装GTK Vala,也找不到gtk + -3

angular - Google Analytics - Angular 5 的平均页面加载

reactjs - CypressError : Timed out after 5000ms `cy.wait()` . ..未发生任何请求

typescript - Visual Studio 代码自动导入

javascript - 如何让私有(private)方法在 TypeScript 中工作?

javascript - 检查8秒内是否没有返回响应

angular - 如何使自定义表单组件与 Angular2 中的表单验证集成?