我正在使用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[]> ;
感谢您的帮助
答案 0 :(得分:0)
下一个函数必须通知您可观察的对象,您可以使用BehaviorSubject和asObservable()函数显示元素。
subject = new BehaviourSubject<any>([])
referenceItems = this.subject.asObservable();
然后,无论何时要更新值,都可以对主题使用“下一个”功能。
this.subject.next(this.subject.value.concat({id:..., label:...}));