打字稿:如何在对象更改时更新选择

Posted

技术标签:

【中文标题】打字稿:如何在对象更改时更新选择【英文标题】:Typescript: How to update select when object has changed 【发布时间】:2019-01-13 10:32:55 【问题描述】:

我有这个 html 代码:

<tr>
    <td><label>G Level 3</label></td>
    <td><select [ngModel]="selectedG3" (ngModelChange)="selectG3Changed($event)">
          <option></option>
          <option *ngFor="let g3 of gLevels3" [ngValue]="g3">g3.name</option>
        </select>
    </td>
</tr>

这是我的 ts 代码:

gLevels3: GLevel[];
getGLevels3(): void 
   this.httpServerService.getGLevels(3).subscribe(glevel3 => this.gLevels3 = glevel3);

gLevels3 是一个带有 ObjectsArray。每次调用函数 getGLevels3() 时,我都想更新 selectoptions

目前它不工作。调用该函数后,select中仍然有相同的options

如何触发更新?

【问题讨论】:

你看过***.com/questions/33181936/…吗? @GetFuzzy 不,但谢谢。我想让你更容易理解。实际上它适用于我刚刚知道的选择,但不适用于具有动态表格行的表格 动态表行听起来你可能有不同的绑定问题。可能值得提出一个新问题。 @GetFuzzy 我明白了。还是谢谢你! @GetFuzzy 我的问题在这里是这样的:github.com/angular/angular/issues/15511 但并不是我收到错误。它只是没有更新表格。 【参考方案1】:

我不确定您是否已经消除了所有其他可能性...您的代码看起来是正确的。在我工作的代码库中,我们遇到了相同类型的情况。我们有一个过滤选择选项情况,它正在更新。

        <select class="tool-controls__select" style="margin-right: 4px;" *ngIf="selectFilterOptions.length > 0 && chartIdsDefined" [(ngModel)]="selectedFilterOption" (change)="selectFilterOptionOnChange()">
            <option [ngValue]="filterItem" *ngFor="let filterItem of selectFilterOptions">filterItem</option>
        </select>
        <select class="tool-controls__select" [(ngModel)]="selectedOption" (change)="selectOnChange()">
            <option [ngValue]="item" *ngFor="let item of selectOptions">item.name</option>
        </select>

【讨论】:

以上是关于打字稿:如何在对象更改时更新选择的主要内容,如果未能解决你的问题,请参考以下文章

如何使用打字稿来监听对象更改?

打字稿如何更新每个对象值

在 Angular 1.5 中绑定组件函数时如何利用打字稿?

通过打字稿更改按钮单击时的svg颜色

如何使用带有动态对象键的打字稿

编译打字稿时如何防止错误“对象类型的索引签名隐式具有'任何'类型”?