解決:
ここで 2 つの問題を解決しました。
1) httpt.getの割り当てが間違っているため、次のエラー メッセージが表示されます。
ORIGINAL EXCEPTION: Cannot find a differ supporting object
'[object Object]' of type 'object'.
NgFor only supports binding to Iterables such as Arrays.
2) Bootstrap-Select-Box のタイミングの問題。オプション フィールドが空です
1) 間違った割り当て
次の割り当ては間違っています。
this.agency = this.ws.get(serviceUrls.agency)
.subscribe(
(data:any) => this.agency = data,
(err:any) => console.debug('AGENCY ERROR:',err),
() => console.debug(this.agency)
);
そして出力を与えます:
[オブジェクト、オブジェクト、オブジェクト、オブジェクト、..]
ngForを介して反復可能ではないものは次のように修正する必要があります。
this.ws.get(serviceUrls.agency)
.subscribe(
(data:any) => **this.agency = data**, // <-- ONLY HERE
(err:any) => console.debug('AGENCY ERROR:',err),
() => console.debug(this.agency)
);
完全を期すために、これはws.get-methodです。
get(url: string) {
return this.http.get(url)
.map((data:any) => data.json());
}
そしてこれは代理店です:
agency: any[];
2) BOOTSTRAP-SELECT と ANGULAR2 のタイミングの問題
それがBootstrap-Select-Boxです(少し-CIに関して-適応バージョン):
<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>
selectpicker のアクティブ化は次の場所で行われます。
ngAfterViewChecked () {
//noinspection TypeScriptUnresolvedFunction
$('.selectpicker').selectpicker();
}
しかし、重要なことが欠けていました。オブザーバブルがデータを出力する前に、選択ボックスがレンダリングされました。したがって、事前にエージェンシーの存在を確認してから、ボックスをレンダリングする必要があります。
ngAfterViewChecked () {
if (this.agency) { // <-- IMPORTANT!
//noinspection TypeScriptUnresolvedFunction
$('.selectpicker').selectpicker();
}
}
それで全部です!たぶん、この情報もあなたに役立つでしょう;)