【发布时间】:2019-03-03 15:36:51
【问题描述】:
我正在使用ng-select,特别是使用 typeahead 从服务器获取列表作为用户类型。以下示例如typeahead example : people3$ 中所述。我的要求是在用户单击按钮时增加价值(我有 id 和 label 和相应的对象)但我无法理解:
- 如何将 Item 推送到
item : Observable<any[]>我尝试执行this.item = concat(of([{label:this.field.display,id:value}]))它会推送值,但它不会反映 ng-select 中的值,直到我单击元素外的其他位置。 - 我试过this solution by
@ViewChild和this.ngSelect.items = [{label:this.field.display,id:value}]仍然没有在ng-select 中显示价值。
在组中添加值后,我添加了对象但它仍然没有显示,如果我点击任何地方很快就会显示值。
我想知道
- 这种行为可能是什么原因。
- 在
Observable<any[]>中推送项目的首选方式
这是我的 ng-select 配置:
<ng-select class="form-control ng-select-padding"
[items]="referenceItems | async"
[hideSelected]="true"
[loading]="searchFailed"
[typeahead]="searchReferenceItems"
bindLabel="label"
bindValue="id"
(change)="setField($event)"
(blur)="onUpdated()"
[formControlName]="field.name" ngDefaultControl>
</ng-select>
//@ TS file
searchReferenceItems = new Subject<object>();
referenceItems: Observable<any[]> ;
感谢您的帮助
【问题讨论】:
-
你的控制台有错误吗?
-
不,没有这样的错误
-
“它会推送值,但它不会反映 ng-select 中的值,直到我单击元素外的其他位置。”可观察到的 ISN'T 值。将其视为“占位符”,让您知道“发生某事时”。 “什么都没有改变”,直到“有事发生”!问:有意义吗?
标签: angular rxjs angular6 rxjs6 angular-ngselect