2017-06-20 2 views
0

Während angular2-Drop-Down-Multiselect in Arraylist ‚Optionen‘ verwenden,Wie benutzt man angular2-dropdown-multiselect mit Observables Array?

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

Aber hier muss ich ‚Optionen $‘ Observablen verwenden ‚Optionen‘ anstelle von Array. Wie geht das?

+0

Ich verstehe dich nicht! Aber lassen Sie mich wissen, wenn Sie etwas über asynchrone Pfeife wollen? wie, '[Optionen] =" Optionen | async "' ??? –

+0

ja etwas wie asynchrone Leitung. Aber die Optionen $ | async funktioniert nicht. – Jeevika

+0

Möchten Sie Ihren Service-Callback auf "synchron" anstelle von "asynchron" ändern? –

Antwort

0

ja so etwas wie asynchrone Rohrleitung. Aber options$|async funktioniert nicht

Dann würde ich es vorziehen, synchronen Rückruf verwenden anstelle von asynchronem Rückruf

Bitte toPromie() Methode verwendet Methode zu synchronisieren. wie,

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

Gibt es einen Grund, dass Sie die Service-Implementierung ändern würden, nur um diese spezifische UI-Anforderung zu erfüllen? Ich sehe den Punkt nicht darin, das Observable in ein Versprechen zu verwandeln, um es dann in ein Observables umzuwandeln –

0

Wenn das Asynchron-Rohr direkt in der Auswahl Komponente ist nicht Arbeits verwenden, können Sie mit versuchen könnte:

<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> 
0

Sie können einfach * verwenden ngIf

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

Mag auch Ihre Seite wartet nicht auf beobachtbare Antworten und lädt schnell. Auch anstelle von "myOptions.length > 0" können Sie eine boolean verwenden, die nach dem Laden von Optionen wahr wird.