angular - 错误类型错误:无法在 TenantsDetailsComponent_Template 读取未定义的属性“street1”
问题描述
我在组件加载 T 时遇到此错误
typeError:无法读取 TenantsDetailsComponent_Template 中未定义的属性“street1”(tenants-details.component.html:92)
组件.ts
我在这里定义了我的对象
tenantDataFromListComp : TenantInfoResponse = { };
TenantInfoResponse 接口具有地址接口类型的属性,如
import { Address } from './address';
import { CommunicationSettings } from './communicationSettings';
import { ContactData } from './contactData';
import { CurrencyPreferenceEntry } from './currencyPreferenceEntry';
import { DmsSettings } from './dmsSettings';
import { DocumentStatus } from './documentStatus';
import { RepairOrderSettings } from './repairOrderSettings';
export interface TenantInfoResponse {
address?: Address;
communicationSettings?: CommunicationSettings;
contactData?: ContactData;
currencyPreferences?: Array<CurrencyPreferenceEntry>;
defaultLocale?: string;
defaultTimezone?: string;
director?: string;
displayName?: string;
dmsSettings?: DmsSettings;
emailOnStatusChangedList?: Array<DocumentStatus>;
forwardEmailAddress?: string;
fullName?: string;
legalEntityName?: string;
paymentLinkValidity?: number;
recipientDataLearning?: boolean;
registeredSeat?: string;
registration?: string;
reminderInterval?: number;
repairOrderSettings?: RepairOrderSettings;
returnEmailAddress?: string;
style?: TenantInfoResponse.StyleEnum;
surveyScript?: string;
tenantCode?: string;
tenantCodeExternal?: string;
vatCode?: string;
}
地址接口就像
export interface Address {
city?: string;
country?: Address.CountryEnum;
postcode?: string;
province?: string;
street1?: string;
street2?: string;
}
组件.html
<div class="card shadow p-0 mb-2 bg-white rounded">
<div class="card-header text-white bg-dark"> Tenant Address</div>
<div class="card-body">
<div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="street1">Street 1</label>
<input type="text" class="form-control"
id="street1" name="street1" [(ngModel)]="tenantDataFromListComp.address.street1" >
</div>
<div class="form-group col-md-6">
<label>Street 2</label>
<input type="text" class="form-control"
name="Street2" [(ngModel)]="tenantDataFromListComp.address.street2">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-4">
<label>Post Code</label>
<input type="text" class="form-control" name="PostCode"
[(ngModel)]="tenantDataFromListComp.address.postcode">
</div>
<div class="form-group col-md-4">
<label>City</label>
<input type="text" class="form-control" name="city"
[(ngModel)]="tenantDataFromListComp.address.city">
</div>
<div class="form-group col-md-4">
<label>Province</label>
<input type="text" class="form-control" name="province"
[(ngModel)]="tenantDataFromListComp.address.province">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label>Country</label>
<input type="text" class="form-control" name="country"
[(ngModel)]="tenantDataFromListComp.address.country">
</div>
</div>
</div>
</div>
</div>
解决方案
有更好的方法来检查您的对象上是否存在该属性
<div class="card shadow p-0 mb-2 bg-white rounded">
<div class="card-header text-white bg-dark"> Tenant Address</div>
<div class="card-body">
<div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="street1">Street 1</label>
<input type="text" class="form-control"
id="street1" name="street1"
add '?'for the properties which might be empty---> [(ngModel)]="tenantDataFromListComp?.address.street1" >
</div>
<div class="form-group col-md-6">
<label>Street 2</label>
<input type="text" class="form-control"
name="Street2" [(ngModel)]="tenantDataFromListComp.?address.street2">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-4">
<label>Post Code</label>
<input type="text" class="form-control" name="PostCode"
[(ngModel)]="tenantDataFromListComp.?address.postcode">
</div>
<div class="form-group col-md-4">
<label>City</label>
<input type="text" class="form-control" name="city"
[(ngModel)]="tenantDataFromListComp.?address.city">
</div>
<div class="form-group col-md-4">
<label>Province</label>
<input type="text" class="form-control" name="province"
[(ngModel)]="tenantDataFromListComp.?address.province">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label>Country</label>
<input type="text" class="form-control" name="country"
[(ngModel)]="tenantDataFromListComp.?address.country">
</div>
</div>
</div>
</div>
</div>
这是避免 HTML 模板中出现此类错误的简单方法。但是,您可以添加 *ngIf 来检查值是否存在,但如果您有更多字段要验证,这会变得更加复杂。
推荐阅读
- python - 将任意长度列表传递给自定义层的巧妙方法
- c++ - Questions about multithread UDP Client-Server architecture
- javascript - Javascript 中的“TimeEvent”对象是什么?它有哪些方法和属性?
- apache-spark - Spark SQL - 在 SQl Notebook 中声明和使用变量
- c# - 如何将结果保存在执行命令的字符串中
- vb.net - 如何修复循环语句的凯撒密码以进行加密?
- react-native - 反应原生,在屏幕之间移动
- algorithm - 使用递归树方法的时间复杂度
- docker - Docker Web 应用程序无法与 API 应用程序通信
- chef-infra - Chef 期间会聚食谱