如何解决除非单击 ng-select,否则 Angular ng-select 值不会刷新
我正在尝试使用表单 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);
});
谁能帮忙解决这个问题?
谢谢
解决方法
您可以使用 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
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。