将完成的项目导入另一个项目后,我突然收到此错误:
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)
您已输入为
id
的string
。在模板中,您使用以下命令调用
onSubmit
:(ngSubmit)="onSubmit(selectedUser._id,this.userForm.value)"
selectedUser._id
是number
所以你得到了错误
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/