Angular 将默认值指定给使用“角度”中的接口定义的对象的特性
我正在开发一个Angular应用程序,其中我使用Typescript中的Angular 将默认值指定给使用“角度”中的接口定义的对象的特性,angular,typescript,angular-components,Angular,Typescript,Angular Components,我正在开发一个Angular应用程序,其中我使用Typescript中的接口定义了一些大型自定义表单对象类型。属性类型主要是string或number 我正在使用这些对象来使用ngModel填写表单,因此我需要在组件端为该对象的属性指定默认值(否则,表示对象未定义)时会出错。 我的问题是,为这些对象的属性指定默认值的首选或好方法是什么。我知道以下方法: 使用接口定义对象的形状,并在组件侧指定默认值(目前,我遵循此操作) 使用Class定义对象并在构造函数中指定默认值。通过这种方式,您不必担心在
接口
定义了一些大型自定义表单对象类型。属性类型主要是string
或number
我正在使用这些对象来使用
ngModel
填写表单,因此我需要在组件端为该对象的属性指定默认值(否则,表示对象未定义
)时会出错。我的问题是,为这些对象的属性指定默认值的首选或好方法是什么。我知道以下方法:
- 使用接口定义对象的形状,并在组件侧指定默认值(目前,我遵循此操作)
- 使用
定义对象并在构造函数中指定默认值。通过这种方式,您不必担心在组件上指定默认值。我认为这是编写组件代码的一种更干净的方法。但不确定,因为这是首选方式Class
让我知道在使用
ngModel
对象时,使用class
是否是定义复杂对象(具有嵌套属性)的首选方法。另外,如果有其他方法解决此问题。我的服务中有这样一种方法:
initializeProduct(): IProduct {
return {
id: 0,
productName: null,
productCode: null,
tags: [''],
releaseDate: null,
price: null,
description: null,
starRating: null,
imageUrl: null
};
}
ngModel
不要求所有输入都具有默认值。输入可以不填充。那么,为什么您觉得必须有默认值呢?为什么不首先让界面属性成为可选的呢?除了填写表单之外,对象是否在没有默认值的情况下工作?例如,它们是否以业务逻辑术语工作?您没有给出太多的细节,但因为您主要关心的是填写表单,所以感觉您应该在组件端设置默认值。使用接口
(JSON对象不是函数,因此在技术上与类不匹配…),然后使用服务
获取该接口的默认实例(这将像构造函数一样工作(不要在组件中这样做,你每次都必须这样做)@只有当我在接口中设置一些可选属性时才可以。我可以设置一些未填充的输入,并且不需要提供默认值。对吗?如果属性是可选的,编译器不会在缺少属性时抱怨