在事件發生變化時,我試圖捕獲在選擇下拉串列中顯示的物件的值。
<ion-select
placeholder="Select your itinerary"
(ionChange)="handleChange($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]。
handleChange(e) {
console.log('event', e.target);
this.pushLog('ionChange fired with value: ' e.detail.value);
}
這是 console.log:
ionChange 觸發值:'[Object object]
在線搜索后,我嘗試使用JSON.stringify(e.detail.value)simply gives me"[Object object]"
如何獲取物件其他屬性的實際值?
uj5u.com熱心網友回復:
我真的不喜歡這個解決方案,但它確實有效。我通過在 html 中參考它們來獲取其他屬性值:
const test = e.detail.value.split("*");
console.log('event', test);
this.pushLog('ionChange fired with value: ' test);
value="{{itinerary?.itinerary.destination}}, * {{itinerary?.itinerary.moreProperties}}"
該事件在我必須拆分的一個字串中包含所有不同的值。
我不喜歡這樣,因為它污染了 html,而且我必須使用 * 來分隔字串而且我不是 100% 順序會保持不變。我必須假設順序不會改變,并且我永遠不會在任何其他屬性欄位中使用“*”。必須有更好的方法來做到這一點。
uj5u.com熱心網友回復:
如果你想使用一個物件(或陣列)而不是一個字串作為值,你需要像這樣設定它[value]="itinerary?.itinerary"::
<ion-select
placeholder="Select your itinerary"
(ionChange)="handleChange($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>
然后在組件的代碼中,您可以像這樣獲取選定的值:
handleChange(e) {
console.log(e.detail.value);
}
uj5u.com熱心網友回復:
我對 Angular 或 Ionic 不熟悉......
但假設這e.detail.value應該是所選選項的value,你可以試試這個:
<ion-select-option *ngFor="let itinerary of myItineraries" value="{{JSON.stringify(itinerary?.itinerary)}}">{{itinerary?.itinerary.destination}}</ion-select-option>
您應該在事件處理程式中將其字串化:
this.pushLog('ionChange fired with value: ' e.detail.value);
所以你可以決議它以使用物件:
const eventDetails = JSON.parse(e.detail.value)
console.log(`${eventDetails.destination} was selected.`)
uj5u.com熱心網友回復:
你犯的錯誤是從這里跳過,回傳值是一個物件,但你試圖將它與一個字串連接起來。嘗試一個一個地記錄
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537414.html
