typescript 为ngModel声明变量

5sxhfpxr  于 2023-02-25  发布在  TypeScript
关注(0)|答案(2)|浏览(157)

我对ngModel有一些小问题。
我在ts文件中创建对象声明:

public descriptorSelected: DescriptorCreateSelected = {
    location: '',
    methodType: '',
    securityLevel: '',
    provider: '',
    inputParameters: {
      documentType: '',
      email: '',
      phone: '',
      optionalDocumentType: '',
      preferedLanguage: '',
      redirectUrlDefined: '',
      organizationName: '',
      organizationVat: '',
      certificationMode: ''
    }
  };

界面如下所示:

export interface DescriptorCreateSelected {
  location?: string;
  methodType?: string;
  securityLevel?: string;
  provider?: string;
  inputParameters?: DescriptorInputParametersSelected

}

我想在HTML文件中使用这个对象"descriptorSelected"来绑定输入值。使用"location"声明,"methodType"工作正常。当我想绑定来自"inputParameters {}"的变量时,例如:"输入参数. documentType"我看到错误:

error TS2532: Object is possibly 'undefined'.

HTML看起来像这样:

<select name="inputParametersDocumentType" [(ngModel)]="descriptorSelected.inputParameters.documentType">

怎么了?
还有一个问题--如果我在对象模型中使用接口,在绑定变量之前,我是否总是必须声明变量?

3htmauhk

3htmauhk1#

因为inputParameters属性声明为可选属性。请删除?以使其成为必需属性。
如果使用某些值初始化构造函数中变量,则没有理由将所有属性声明为可选。

cgvd09ve

cgvd09ve2#

删除inputParameters的?以使其成为必需参数

export interface DescriptorCreateSelected {
  location?: string;
  methodType?: string;
  securityLevel?: string;
  provider?: string;
  inputParameters?: DescriptorInputParametersSelected // you must remove ? 

}

相关问题