使用实现接口的对象时,在双向表单绑定期间获取未定义的错误

我有一个界面用户:

export interface User{
name:string;
email:string:
address:string;
}

我在我的离子页面和类中导入了这个,在构造函数代码之前我有代码:

user:User;

然后,在ngOnInit方法中,我有代码来设置此用户变量的值 .

这很好用 .

现在我试图实现用户对象和表单输入字段的双向绑定 . 在表单输入字段我使用这样的模型: [(ngModel)]="user.name"

现在我收到一个错误,即user.name字段未定义 . 所以我转到我的页面代码并尝试设置 user:User={};

这会产生错误,因为接口需要名称,电子邮件和地址 - 因此无法声明为空 . 如果我删除接口并将代码声明为: user:any={} 那么它可以正常工作 .

我认为未定义的错误是因为用户对象在加载UI时没有值(在ngOnInit方法中设置)?我如何处理这种情况在哪里,我想实现接口的概念?或者实现可空字段是否合适?或者是使用课程的最佳做法?我需要澄清一下这个问题 .

回答(2)

2 years ago

您可以使用名称后面的 ? 使接口中的属性可选 .

export interface User {
    name?: string;
    email?: string;
    address?: string;
}

使用此代码,您无需在创建用户对象时显式定义所有属性:

user: User = {};

2 years ago

使用安全的opertaor ? (这回答你的问题 Or is it good to implement nullable fields? ):

export interface User {
    name?: string;
    email?: string;
    address?: string;
}