При изменении события я пытаюсь зафиксировать значение объекта, отображаемого в раскрывающемся списке выбора.
<ion-select
placeholder = "Select your itinerary"
(ionChange) = "handleChangeEvent($event)"
(ionCancel) = "pushLog('ionCancel fired')"
(ionDismiss) = "pushLog('ionDismiss fired')">
<ion-select-option *ngFor = "let itinerary of myItineraries" value = "{{itinerary?.itinerary}}">{{itinerary?.itinerary.destination}}</ion-select-option>
</ion-select>
В маршруте есть несколько свойств, которые мне нужны, но я показываю только пункт назначения. Однако мне нужны эти другие свойства при изменении события.
Однако, когда я пытаюсь зафиксировать изменение, я получаю только [Object object].
handleChangeEvent(e) {
console.info('event', e.target);
this.pushLog('ionChange fired with value: ' + e.detail.value);
}
а это console.info:
ionChange запущен со значением: '[Объект объекта]
После поиска в Интернете я попытался использовать JSON.stringify(e.detail.value) просто дает мне "[Object object]"
Как получить фактические значения других свойств объекта?
Вы правы... это дает мне строку. Итак, как мне получить значение?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Мне действительно не нравится это решение, но оно работает. Я получаю другие значения свойств, ссылаясь на них в html:
const test = e.detail.value.split("*");
console.info('event', test);
this.pushLog('ionChange fired with value: ' + test);value = "{{itinerary?.itinerary.destination}}, * {{itinerary?.itinerary.moreProperties}}"Событие имеет все разные значения в одной строке, которую мне нужно разделить.
Мне это не нравится, потому что это загрязняет html, и я должен использовать * для разделения строки, и я не на 100%, порядок останется прежним. Я должен предположить, что порядок не изменится, и у меня никогда не будет «*» ни в одном из других полей свойств. Должен быть лучший способ сделать это.
Значит, не работает использование JSON.stringify в атрибуте value=? Или ты даже не пробовал?
Это не работает. Он просто выводит "[Object object]"
Если вы хотите использовать объект (или массив) вместо строки в качестве значения, вам нужно установить его следующим образом: [value] = "itinerary?.itinerary":
<ion-select
placeholder = "Select your itinerary"
(ionChange) = "handleChangeEvent($event)"
(ionCancel) = "pushLog('ionCancel fired')"
(ionDismiss) = "pushLog('ionDismiss fired')">
<ion-select-option *ngFor = "let itinerary of myItineraries" [value] = "itinerary?.itinerary">
{{ itinerary?.itinerary.destination }}
</ion-select-option>
</ion-select>
Затем в коде компонента вы можете получить выбранное значение следующим образом:
handleChangeEvent(e) {
console.info(e.detail.value);
}
если
JSON.stringify(e.detail.value)дает вам"[Object object]"... Это потому, что это уже строка. Тогда проблема в том, чтоe.detail.valueчто-то присваивается. чтобы доказать это, попробуйтеtypeof(e.detail.value).