У меня есть небольшая угловая веб-форма только с одним раскрывающимся полем, которое объявлено в моем component.html как formControlName = "serviceName"..
Подробности раскрывающегося списка:
<div class = "dropdown">
<label for = "serviceName">Select the Service</label>
<select class = "form-control" formControlName = "serviceName" id = "serviceName">
<option *ngFor = "let service of srvNames; let i = index" [value] = "service">{{ service.ServiceName }}</option>
</select>
</div>
В моем компоненте у меня объявлен массив srvNames: any[];, и этот массив заполняется через http-вызов службы.
Пользователи могут использовать раскрывающийся список и выбирать разные значения, значения показаны на моей веб-странице. С помощью get ('serviceName'). ValueChanges и подписки я хочу отслеживать изменения.
this.servicesForm.get('serviceName').valueChanges
.subscribe(
(value) => {
console.info(value);
}
);
Когда я console.info значение из подписки, я вижу, что я возвращаюсь [объект Object]
Но когда я console.info свой массив, я вижу значения:
0:{ServiceName: "PhdTimeSeriesVS"}
1:{ServiceName: "Product"}
length:2
__proto__:Array(0)
Кто-нибудь может мне помочь? Спасибо, Лино





Вы возвращаете объект:
{ServiceName: "PhdTimeSeriesVS"}
И в своем выборе вы передаете этот объект как значение
<option *ngFor = "let service of srvNames; let i = index" [value] = "service">
Измените это, чтобы передать значение данного ключа:
<option *ngFor = "let service of srvNames; let i = index" [value] = "service.ServiceName">
В вашем коде есть <option [value] = "service" ..>. Или вы хотите сказать <option [value] = "service.serviceID" ..> - ваш "serviceName" получит значение "service.serviceID" - или вы хотите сказать <option [ngValue] = "service"-затем ваш " serviceName будет объектом