如何使用angular2下拉式multiselect和observables阵列?

如何使用angular2下拉式multiselect和observables阵列?,angular,multi-select,Angular,Multi Select,在arraylist“options”中使用angular2下拉多选时 <ss-multiselect-dropdown [options]="options" [texts]="myTexts" [settings]="mySettings" [(ngModel)]="selectedOption" [ngModelOptions]="{standalone: true}" (ngModelChange)="onChange($event)"></ss-multiselect

在arraylist“options”中使用angular2下拉多选时

<ss-multiselect-dropdown [options]="options" [texts]="myTexts" [settings]="mySettings" [(ngModel)]="selectedOption" [ngModelOptions]="{standalone: true}" (ngModelChange)="onChange($event)"></ss-multiselect-dropdown>

但在这里我需要使用可观察的“options$”而不是数组“options”。 如何做到这一点


是的,类似于异步管道。但是
options$| async
不起作用

那么我更愿意使用同步回调而不是异步回调

请使用
toPromie()
method来同步methode。像

this.http.get(this.apiUrl + 'GetOptions')
            .toPromise()
            .then(responce => 
                 this.options = responce.json())
            .catch(error => {
                return Observable.throw(error);
            });

如果在选择组件中直接使用异步管道不起作用,可以尝试使用:

<ng-container *ngIf="options$| async as options">
    <ss-multiselect-dropdown [options]="options" [texts]="myTexts" [settings]="mySettings" [(ngModel)]="selectedOption" [ngModelOptions]="{standalone: true}" (ngModelChange)="onChange($event)"></ss-multiselect-dropdown>
</ng-container>

您只需使用*ngIf即可

<div *ngIf="myOptions.length > 0"> 
    <ss-multiselect-dropdown [options]="myOptions"  [settings]="mySettings" [(ngModel)]="optionsModel" (ngModelChange)="onChange($event)"></ss-multiselect-dropdown>
</div>

同样,你的页面也不会等待可观察到的响应,加载速度也很快。
另外,您可以使用一个在加载选项后变为真的
布尔值,而不是
“myOptions.length>0”

我不明白!但是,如果您想了解异步管道,请告诉我?比如,
[options]=“options | async”
?是的,比如async管道。但是选项$| async不起作用。是否要将服务回调更改为
同步
,而不是
异步
?是否有任何理由更改服务实现以满足此特定UI要求?我看不出把可观察的转化为承诺,然后再把它转化为可观察的有什么意义