How does Picker refresh the data for each column?

code

let picker = this.pickerCtrl.create();
    picker.addButton({
      text: '取消',
      role: 'cancel'
    });
    picker.addButton({
      text: '确定',
      handler: (data: any) => {
        this.value = data;
        console.log(data);
      },
    });
    let province = china.province[0].value,
      city = china.city[province][0].value;
    picker.addColumn({ name: 'province', options: china.province });
    picker.addColumn({ name: 'city', options: china.city[province] });
    picker.addColumn({ name: 'area', options: china.area[city] });
    picker.ionChange.subscribe(info => {
      if (province != info.province.value) {
        province = info.province.value;
        for (let _info of china.province) {
          if (_info.value == province) {
            picker.getColumn('city').options = china.city[province];
            picker.getColumn('city').selectedIndex = 0;
            city = china.city[province][0].value;
            picker.getColumn('area').options = china.area[city];
            picker.getColumn('area').selectedIndex = 0;
            break;
          }
        }
        picker.refresh();
      }

      if (city != info.city.value) {
        city = info.city.value;
        picker.getColumn('area').options = china.area[city];
        picker.getColumn('area').selectedIndex = 0;
        picker.refresh();
      }
    });
    picker.isOverlay = false;
    picker.present();

After switching, the code changes the array of the city, and this problem occurs

What is this “picker” you speak of?

ion-datetime use picker;

That class looks undocumented and marked @hidden in the source code, which tells me apps should not be dealing with it.

         setTimeout(() => {
               this.picker.instance._cols.toArray().forEach((col) => {
                   console.log('col', col);
                   col.setSelected(1, 100);
                   col.refresh();
               });
           }, 50)

try this