我有一个Aurelia视图模型,在compose标签中使用如下:
<compose view-model="../address/address" view='../address/address.html' model.bind ="client.address"></compose>
有效。在某些情况下,我将地址的值作为client.address传递,当它可用时,它可以工作,否则所有字段都作为“创建”页面工作,并且为空。
其中一个地址组件是“状态”下拉组件。就在这里:
<div class="col-md-3">
<div class="form-group">
<label class="control-label col-md-6">State:</label>
<div class="col-md-5">
<aubs-typeahead data.bind="states" value.bind="address.stateShortName" placeholder="State..." open-on-focus.bind="true"></aubs-typeahead>
</div>
</div>
</div>
请注意,我已将下拉列表绑定到“address.stateShortName”再次这样做并显示父节点的状态名称,在本例中为客户端。
在我没有数据要绑定的情况下,我想用默认值填充状态下拉列表但是我遇到了为绑定变量“address.stateShortName”赋值的问题
错误TS2339(TS)属性'stateShortName'在'never'类型上不存在。
Address.ts的主要变量“address”设置为包含地址视图模型的所有变量的接口:
interface AddressDetails {
address1: string;
address2: string;
suburb: string;
postcode: string;
stateShortName: string;
addressLocationId: number;
}
您可以看到我将“stateShortName”作为其中一个元素。
在地址视图模型中,我将地址设置为AddressDetails接口:
export class Address {
address: AddressDetails;
因此,当我遇到我没有将模型传递给此视图模型的情况时,我反而希望将状态设置为默认值...说“VIC”同时我获取状态下拉列表(其中但是当我尝试在获取之后设置此值address.stateShortName时,我收到了上述错误。
fetch("/api/selectData/GetStatesAndCompanyStateId", {
method: "GET",
headers
})
.then(response => response.json())
.then(data => {
for (const key in data.stateDropDownList) {
this.states[key] = data.stateDropDownList[key].stateShortName;
}
if (!this.address) {
this.address.stateShortName = data.companyStateShortName //HERE!
}
})
当指示整个变量未定义时,如何在地址变量中设置此单个元素“address.stateShortName”?
如何设置“地址”,使其至少具有空值,并避免在未设置的情况下未定义?
答案 0 :(得分:1)
首先,为什么要在撰写标记中添加视图模型和视图等?只有视图模型就足够了(另见文档here)
继
<compose view-model="../address/address" view='../address/address.html' model.bind ="client.address"></compose>
也可以
<compose view-model="../address/address"></compose>
据我所知,你有一个专用的界面文件?如果是,您是否在地址类中导入了接口文件?
这是一个很好的文档,说明如何使用typescript的接口:Documentation