typescript - Ionic v4.12 ion-picker kan ikke finne noen måte å håndtere endring av valgt element i en kolonne


Jeg bruker ion-picker-komponenten med Ionic V4.12, og jeg har 3 kolonner. Når jeg velger ett element i den første kolonnen, trenger jeg å filtrere elementene i den andre kolonnen, men jeg kan ikke finne noen måte å løse problemet mitt på

Jeg fant ut at PickerColumn har en oppdateringsfunksjon, men den fungerer fortsatt ikke

import { PickerController } from '@ionic/angular';

@Component({
  ...
})
export class ComponentPage {
  constructor(public pickerCtrl: PickerController) { }

  async openPicker() {
    const picker = await this.pickerCtrl.create({
      buttons: [{
        text: 'Done',
      }],
      columns: [
        {
          name: 'days',
          options: [
            {
              text: '1',
              value: 1
            },
            {
              text: '2',
              value: 2
            },
            {
              text: '3',
              value: 3
            },
          ]
        },
        {
          name: 'years',
          options: [
            {
              text: '1992',
              value: 1992
            },
            {
              text: '1993',
              value: 1993
            },
            {
              text: '1994',
              value: 1994
            },
          ]
        },
      ]
    });
    await picker.present();
  }
}

Når jeg velger 1 i kolonnen for dager, vil jeg bare vise elementet som heter 1994.

Svar #1

Jeg sendte en forespørsel til IONIC TEAM, og svaret er å lytte til ionPickerColChange Even

picker.addEventListener('ionPickerColChange', async (event: any) => {
     here handle some logic
} 

Svar #2

Du kan lytte til onDidDismiss-metoden slik:

async openPicker() {
    const picker = await this.pickerCtrl.create({
      buttons: [{
        text: 'Done',
      }],
      columns: [
        {
          name: 'days',
          options: [
            {
              text: '1',
              value: 1
            },
            {
              text: '2',
              value: 2
            },
            {
              text: '3',
              value: 3
            },
          ]
        },
        {
          name: 'years',
          options: [
            {
              text: '1992',
              value: 1992
            },
            {
              text: '1993',
              value: 1993
            },
            {
              text: '1994',
              value: 1994
            },
          ]
        },
      ]
    });

    picker.onDidDismiss().then(({data}) => console.log(data.years.value));

    await picker.present();
  }

Relaterte artikler