我正在使用ng-select并专门使用typeahead从服务器获取列表作为用户类型。以下是typeahead example : people3$
中描述的示例。我的要求是在用户点击按钮时增加价值(我有id
和label
以及相应的对象),但我不明白:
item : Observable<any[]>
我尝试做this.item = concat(of([{label:this.field.display,id:value}]))
它推动值但它不反映ng-select中的值,直到我点击元素之外的其他地方。@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[]> ;
谢谢你的帮助
必须通过下一个函数通知observable,您可以使用BehaviorSubject和函数asObservable()来显示元素。
subject = new BehaviourSubject<any>([])
referenceItems = this.subject.asObservable();
然后,当您想要更新值时,可以使用主题的“下一个”功能。
this.subject.next(this.subject.value.concat({id:..., label:...}));