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

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

#1楼 票数:1 已采纳

您的onSubmit方法需要 2 个参数。

onSubmit(id: string, data: User)

您输入的id作为string

从您调用onSubmit的模板中:

(ngSubmit)="onSubmit(selectedUser._id,this.userForm.value)"

selectedUser._id是一个number

所以你得到了错误

“数字”类型的参数不能分配给“字符串”类型的参数

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

解决方案

更改您的onSubmit方法以将idnumber

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

从你的评论

需要更改interface以反映数据的形状:

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

  ask by Munchkin translate from so

未解决问题?本站智能推荐:

2回复

打字稿错误:TS2314:泛型类型'ElementRef'需要2个类型参数

我正在使用Angular 5.x模板,但我使用https://update.angular.io/ guide将其升级到Angular 6。 现在我的构造函数中出现此错误 我的代码: 我之前的Angular版本5中没有此错误。 有什么变化? 我不明白文档:( https://an
1回复

运行angular项目时出错

使用 ng update 从 6.1.7 更新到 8.1.0 后,我无法再构建项目。 它给了我 我试过了 我克隆了很多次,但每次当我安装节点模块并为应用程序提供服务时,它都会给我 sae 错误我也尝试了很多次卸载然后安装节点模块
1回复

尝试将属性绑定到ng模型时,如何修复Angular错误属性“bankCode”不存在于类型“用户”上?

我有一个应用程序,我试图从 mongo db 获取值并将其显示在有角度的表中。 我创建了一个具有名称、密码等值的用户类,但它一直说该属性在类型 User 上不存在。 即使我有相同的编译错误,它以前也能工作,所以我忽略了它,但有时当我尝试打开页面时它无法获取,而其他时候即使出现错误它也能工作。 请帮忙
2回复

我无法使用ngbuild--prod构建我的项目

我已经使用 Angular 6 完成了我的项目,并想部署我的项目,但是每当我运行ng build --prod它都会出现这些错误,任何其他命令,例如npm start 、 ng serve或ng build它们都会成功运行。
4回复

属性“名称”在类型“任何[]”上不存在

使用[(ngModel)] ,我设法设定基于所选择的下拉的输入值,但使用编译时我发现了一个错误 ng build --configuration=prod , 误差示出的是 属性“名称”在类型“任何[]”上不存在 属性“值”在类型“任何[]”上不存在 当我使用ng serve编译
1回复

Angular2:提供的参数与调用目标的任何签名都不匹配

我创建了自己的可观察服务 这是一个用法示例 所以目前在编译时说 指的是这个特定的字符串, 但是服务工作完美,有什么建议有什么不对吗?
1回复

打字稿错误TS2322:“可观察”类型-Angular5和打字稿2.4.2

试图了解为什么我从4迁移到5时为什么会收到大量打字稿TS2322错误。我已经使用angular cli安装了一个新的ng项目。 包JSON是标准配置,以下是代码段。 这是我正在测试的组件: 我的IDE突出显示this.show_dropdown $并显示错误消息: 错误TS23
1回复

Employee类型中缺少属性toggleEdit”,但这是一种方法,该怎么办?Angular2

我有一个Employee组件- 像这样的EmployeeList组件- 我在尝试将新员工推入列表的那行出现错误。 类型'{名称:字符串;类型'中缺少属性'toggleEdit'。 isEditOn:假; }”。 但这不是一种方法吗? 我在这里想念什么吗?