我有一个通用的方法来从后端获取数据并将其传递给数组
这是方法的代码,在这里我传递用于获取数据,数组和默认值的方法,在这里我需要编写第一个元素ID
interface fillDropdownOptionsInterface {
method: Observable<ListResultDtoOfDropdownOptionDto>;
items: SelectItem[];
defaultvalue?: number;
}
public static fillDropdownOptionsObj(ref: fillDropdownOptionsInterface): void {
ref.method.subscribe(r =>
r.items.forEach(value => {
ref.items.push({
label: value.name,
value: value.id,
});
ref.defaultvalue = ref.items[0].value;
})
);
}
这就是我的称呼
getQuoteTypes(): void {
const obj = {
method: this._quoteService.getQuoteTypesOptions(),
items: this.quoteTypes,
defaultvalue: this.quote.quoteTypeId,
};
DropdownHelpers.fillDropdownOptionsObj(obj);
}
然后在OnInit方法中调用它。
我的问题是,当我想在这样的HTML模板上获取
quoteTypeId
时,我一无所获。<div class="col-4">
<p-dropdown
[disabled]="!quoteTypes"
[options]="quoteTypes"
autoWidth="false"
styleClass="w-100"
name="quoteType"
[autoWidth]="true"
[(ngModel)]="quote.quoteTypeId"
></p-dropdown>
</div>
{{ quote.quoteTypeId }}
我试图传递一个预初始化的值以将其传递给函数,此函数之后需要重写它并弹出外部重写值。
像这样
this.quote.quoteTypeId = 99;
但从视图上看,我仍然看到99。
所以我想这是问题所在-函数,而不是在外部重写值(我的意思是
this.quote.quoteTypeId
)。我该如何解决? 最佳答案
在您的助手DropdownHelpers.fillDropdownOptionsObj(obj)
中,您覆盖了default
的值,但似乎您想将的值分配给quote.quoteTypeId
。
也许您可以尝试以下方法:
<div class="col-4">
<p-dropdown
[disabled]="!obj.items"
[options]="obj.items"
autoWidth="false"
styleClass="w-100"
name="quoteType"
[autoWidth]="true"
[(ngModel)]="obj.defaultvalue">
</p-dropdown>
</div>
{{ quote.quoteTypeId }}
我将每个引用
quote
的地方都改为引用obj
。第二个建议:
将
this.quote.quoteTypeId
更改为this.quote
: getQuoteTypes(): void {
const obj = {
method: this._quoteService.getQuoteTypesOptions(),
items: this.quoteTypes,
defaultvalue: this.quote,
};
DropdownHelpers.fillDropdownOptionsObj(obj);
}
然后,在处理程序中,像
ref.defaultvalue.quoteTypeId = ref.items[0].value
这样分配您的ID:public static fillDropdownOptionsObj(ref: fillDropdownOptionsInterface): void {
ref.method.subscribe(r =>
r.items.forEach(value => {
ref.items.push({
label: value.name,
value: value.id,
});
ref.defaultvalue.quoteTypeId = ref.items[0].value;
})
);
}