【问题标题】:Angular ng-select value is not getting refreshed unless clicking the ng-select除非单击 ng-select,否则不会刷新 Angular ng-select 值
【发布时间】:2021-06-22 16:55:46
【问题描述】:

我正在尝试使用表单 valuechanges 根据其他字段值设置 ng-select 的值。 该值已设置但不显示,直到我单击 ng-select 框。 bindLabel 没有被刷新。

<ng-select [items]="routes$ | async" bindLabel="combinedRoute" formControlName="route">
    <ng-template ng-typetosearch-tmp>
        <div class="ng-option disabled">
           Type route...
        </div>
    </ng-template>
    <ng-template ng-notfound-tmp let-searchTerm="searchTerm">
        <div class="ng-option disabled">
            No routes found for "{{searchTerm}}"
        </div>
    </ng-template>
    </ng-select>

组件:

deptCtrl.valueChanges.subscribe(data=> {
        let routeCtl = this.form.get('route');
        routeCtl .setValue(data);
  });

谁能帮助解决这个问题?

谢谢

【问题讨论】:

    标签: angular11 angular-ngselect


    【解决方案1】:

    您可以使用updateValueAndValidity 方法,就像它具有价值但更改检测没有检测到。

    deptCtrl.valueChanges.subscribe(data=> {
            let routeCtl = this.form.get('route');
            routeCtl .setValue(data);
            this.form.controls["route"].updateValueAndValidity(); // update value and validity.
      });
    

    另一种方法。手动拨打changeDetection

    constructor(cd:ChangeDetectionRef){}
    
    deptCtrl.valueChanges.subscribe(data=> {
            let routeCtl = this.form.get('route');
            routeCtl .setValue(data);
            this.cd.detectChanges(); //Detect changes
      });
    

    【讨论】:

    • 谢谢,但它仍然没有更新。
    • 你能用数据更新你的问题吗?什么时候你在'items'中得到什么以及你什么时候设置'data'的值类型?
    • 我自己也遇到了同样的问题。我正在使用对可观察对象的点击来更新值。如果我使用不同的组件,它会更新得很好,这只发生在 ng-select 上。
    猜你喜欢
    • 2021-10-16
    • 2021-11-08
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多