LÖSUNG:NgFor unterstützt nur die Bindung an Iterables & Bootstrap-Select-Box leer ist
Wir 2 Probleme hier gelöst haben:
1) Falsche Zuordnung mit httpt.get haben wir die Fehlermeldung bekommen:
ORIGINAL EXCEPTION: Cannot find a differ supporting object
'[object Object]' of type 'object'.
NgFor only supports binding to Iterables such as Arrays.
2) Timing-Problem mit Bootstrap-Select-Box; Option-Felder sind leer
1) FALSCH AUFGABE
Nach der Abtretung ist falsch:
this.agency = this.ws.get(serviceUrls.agency)
.subscribe(
(data:any) => this.agency = data,
(err:any) => console.debug('AGENCY ERROR:',err),
() => console.debug(this.agency)
);
und gibt die Ausgabe:
[Objekt, Objekt, Objekt, Objekt , ..]
was nicht über ngFor wird Iterable und sollte in korrigiert werden:, ist dies ws.get-Methode
this.ws.get(serviceUrls.agency)
.subscribe(
(data:any) => **this.agency = data**, // <-- ONLY HERE
(err:any) => console.debug('AGENCY ERROR:',err),
() => console.debug(this.agency)
);
Aus Gründen der Vollständigkeit halber:
get(url: string) {
return this.http.get(url)
.map((data:any) => data.json());
}
und das ist die Agentur:
2) Timing-Problem mit BOOTSTRAP-SELECT & ANGULAR2
, dass der Bootstrap-Select-Box ist (ein wenig - in Bezug auf CI - angepasste Version):
<select [(ngModel)]="localValues.agency"
name="agency"
id="agency"
class="selectpicker select-search"
data-selectpicker
data-live-search="true"
required="">
<option
*ngFor="let item of agency"
[ngValue]="item.value">
{{ item.label }}
</option>
</select>
Die aktivierende von selectpicker geschieht in:
ngAfterViewChecked() {
//noinspection TypeScriptUnresolvedFunction
$('.selectpicker').selectpicker();
}
Aber ein importang Ding fehlte; Die Auswahlbox wurde gerendert, bevor die Observablen Daten ausstrahlten. Daher müssen wir vorher die Existenz der Agentur prüfen und dann die Box rendern:
ngAfterViewChecked() {
if (this.agency) { // <-- IMPORTANT!
//noinspection TypeScriptUnresolvedFunction
$('.selectpicker').selectpicker();
}
}
Das ist alles! Vielleicht ist diese Information auch für Sie nützlich;)
Ich denke, es ist ein Timing-Problem, die Auswahlbox wird gerendert, bevor beobachtbar liefert die Daten? –