【发布时间】:2019-10-21 01:24:32
【问题描述】:
我正在尝试填充剑道多选控件。数据确实绑定到控件,我可以看到货币对象中的所有货币,但它会显示 ngmodel 中先前选择的货币。如何显示所选货币?
<kendo-multiselect [data]="LegalFundClasses.Currencies" style="height: 29.5px;"
[(ngModel)]="f.OtherCurrencyName" [textField]="'Name'" [valueField]="'Id'"
[autoClose]="false">
<ng-template kendoMultiSelectItemTemplate let-dataItem>
<input type="checkbox" class="k-checkbox" [checked]="isItemSelected(dataItem.Name)">
<label class="k-checkbox-label">{{ dataItem.Name }}</label>
</ng-template>
</kendo-multiselect>
组件
public value: any = [{ Id: null, Name: "" }];
public isItemSelected(itemText: string): boolean {
return this.value.some(item => item.Name === itemText);
}
货币对象
"Currencies": [
{
"Id": 7,
"Name": "AUD"
},
{
"Id": 10,
"Name": "BND"
},
{
"Id": 19,
"Name": "BRL"
},
{
"Id": 6,
"Name": "CAD"
},
{
"Id": 5,
"Name": "CHF"
},
{
"Id": 13,
"Name": "CNH"
},
{
"Id": 12,
"Name": "CNY"
},
{
"Id": 18,
"Name": "DKK"
},
{
"Id": 3,
"Name": "EUR"
}]
Ng模型
分配给 ngModel 的 f.OtherCurrencyName 包含一个以逗号分隔的字符串值 10,19,7。
编辑 1
截图
代码
<td *ngIf="EditMode[f.LegalFundClassCommercialViewModel.Id] && c == 'Other Currencies'"
class="tableItem">
<!-- f.LegalFundClassCommercialViewModel.OtherCurrencyName -->
<kendo-multiselect [data]="LegalFundClasses.Currencies" style="height: 29.5px;"
[(ngModel)]="f.LegalFundClassCommercialViewModel.OtherCurrencyName"
[textField]="'Name'" [valueField]="'Id'" [autoClose]="false">
<ng-template kendoMultiSelectItemTemplate let-dataItem>
<input type="checkbox" class="k-checkbox"
[checked]="isItemSelected(dataItem.Name)">
<label class="k-checkbox-label">{{ dataItem.Name }}</label>
</ng-template>
</kendo-multiselect>
</td>
public value: any = [];
public valueChange(value: any): void {
// this.OtherCurrencyName = value.map(x => x.Id).join();
}
public isItemSelected(itemName: string): boolean {
return this.value.some(item => item.Name === itemName);
}
其他货币名称
"LegalFundClassCommercialViewModel": {
"Description": "Class A",
"AuditSummary": "rmenon Jun 10, 2019",
"FeesReviewSummary": "dmukerji May 28, 2019",
"TermsReviewSummary": "kweigand Jan 16, 2019",
"Id": 13713,
"FundId": 237146,
"FundClassType": 3,
"CurrencyId": 19,
"PrimaryCurrencyName": "BRL",
"OtherCurrencyName": [
10,
19,
7
]
}
货币对象
"Currencies": [
{
"Id": 7,
"Name": "AUD"
},
{
"Id": 10,
"Name": "BND"
},
{
"Id": 19,
"Name": "BRL"
},
{
"Id": 6,
"Name": "CAD"
}]
【问题讨论】:
-
你能像jsfiddle一样更新你的代码的可调试版本吗?
-
我已经发布了f.LegalFundClassCommercialViewModel.OtherCurrencyName的内容
-
我注意到你在做 this.value.some(item => item.Name === itemName);并将值绑定到 ngModel。就我而言,它是 f.LegalFundClassCommercialViewModel.OtherCurrencyName
-
关于我需要如何让它在我的情况下工作的任何想法。组件中的 Value 属性与 f.LegalFundClassCommercialViewModel.OtherCurrencyName 没有链接
-
选定值
[10,19,7]和选项[{name: "AUD", Id: 1}, { name: "BRL", Id: 2 }]不是相似数组,必须使用相同格式的数组。