Angular使用[(ngModel)]双向绑定报TS2339:User类型无username属性如何解决
问题解决方案
报错的核心原因是User类的构造函数参数未声明访问修饰符,你定义的username、firstname等字段仅为构造函数内部的局部参数,不会被自动创建为类的实例属性,因此模板双向绑定时无法识别到对应属性。
你只需要修改User.ts文件,给构造函数的所有参数添加public访问修饰符即可,这是TypeScript的语法糖,添加后会自动将参数映射为类的公开实例属性,修改后代码如下:
export class User{ constructor( public username : string, public firstname : string, public lastname : string, public age : number, public password : string ){} }
如果你不想使用语法糖,也可以手动声明类属性后在构造函数内赋值,写法如下:
export class User{ // 先手动声明类的实例属性 username: string; firstname: string; lastname: string; age: number; password: string; constructor( username : string, firstname : string, lastname : string, age : number, password : string ){ // 构造函数内给实例属性赋值 this.username = username; this.firstname = firstname; this.lastname = lastname; this.age = age; this.password = password; } }
修改完成后重新启动项目编译即可解决报错。你当前项目里的FormsModule已经正确导入,ngModel相关配置没有问题,不需要额外调整其他代码。
内容的提问来源于stack exchange,提问作者arun dalakoti
相关产品推荐
相关产品推荐

