我有一个通用的方法来从后端获取数据并将其传递给数组

这是方法的代码,在这里我传递用于获取数据,数组和默认值的方法,在这里我需要编写第一个元素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;
            })
        );
    }

09-10 22:49