Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 将默认值指定给使用“角度”中的接口定义的对象的特性_Angular_Typescript_Angular Components - Fatal编程技术网

Angular 将默认值指定给使用“角度”中的接口定义的对象的特性

Angular 将默认值指定给使用“角度”中的接口定义的对象的特性,angular,typescript,angular-components,Angular,Typescript,Angular Components,我正在开发一个Angular应用程序,其中我使用Typescript中的接口定义了一些大型自定义表单对象类型。属性类型主要是string或number 我正在使用这些对象来使用ngModel填写表单,因此我需要在组件端为该对象的属性指定默认值(否则,表示对象未定义)时会出错。 我的问题是,为这些对象的属性指定默认值的首选或好方法是什么。我知道以下方法: 使用接口定义对象的形状,并在组件侧指定默认值(目前,我遵循此操作) 使用Class定义对象并在构造函数中指定默认值。通过这种方式,您不必担心在

我正在开发一个Angular应用程序,其中我使用Typescript中的
接口
定义了一些大型自定义表单对象类型。属性类型主要是
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对象不是函数,因此在技术上与类不匹配…),然后
使用服务
获取该接口的默认实例(这将像构造函数一样工作(不要在组件中这样做,你每次都必须这样做)@只有当我在接口中设置一些可选属性时才可以。我可以设置一些未填充的输入,并且不需要提供默认值。对吗?如果属性是可选的,编译器不会在缺少属性时抱怨