Почему я не могу создать радио-оповещение в Ioni c 4? - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь создать предупреждение, используя Alert Controlller с Ioni c 4. Я хочу создать массив с входами, а затем создать предупреждение и назначить ему эти входные данные, например:

async presentAlert() {
  const alertInputs = [
    { name: 'radio1', type: 'radio', label: 'Radio 1', value: 'value1', checked: true },
    { name: 'radio2', type: 'radio', label: 'Radio 2', value: 'value2' },
  ]

  const alertMessage = await this.alertCtrl.create({
    inputs: alertInputs
  });
}

Проблема в том, что я получаю эту ошибку в коде Visual Studio:

> Type '({ name: string; type: string; label: string; value: string;
> checked: boolean; } | { name: string; type: string; label: string;
> value: string; checked?: undefined; })[]' is not assignable to type
> 'AlertInput[]'.   Type '{ name: string; type: string; label: string;
> value: string; checked: boolean; } | { name: string; type: string;
> label: string; value: string; checked?: undefined; }' is not
> assignable to type 'AlertInput'.
>     Type '{ name: string; type: string; label: string; value: string; checked: boolean; }' is not assignable to type 'AlertInput'.
>       Types of property 'type' are incompatible.
>         Type 'string' is not assignable to type '"number" | "radio" | "date" | "email" | "password" | "search" | "tel" | "text" | "url" |
> "time" | "checkbox" | "textarea"'.ts(2322)

Если я пытаюсь определить входные данные непосредственно в предупреждении, вот так, это работает без проблем, даже если это тот же массив:

const alertMessage = await this.alertCtrl.create({
  inputs: [
    { name: 'radio1', type: 'radio', label: 'Radio 1', value: 'value1', checked: true },
    { name: 'radio2', type: 'radio', label: 'Radio 2', value: 'value2' },
  ]
})

Вы знаете, почему это происходит? Мне нужно определить массив входов перед созданием оповещения, потому что они генерируются программно из удаленного источника.

1 Ответ

1 голос
/ 12 марта 2020

Почему-то AlertInput не импортируется автоматически. Однако вы можете импортировать его вручную.

import {AlertInput} from '@ionic/core/dist/types/components/alert/alert-interface';
...

async presentAlert() {
  const inputs: AlertInput[] = [
    { name: 'radio1', type: 'radio', label: 'Radio 1', value: 'value1', checked: true },
    { name: 'radio2', type: 'radio', label: 'Radio 2', value: 'value2' }
  ];
  const alertMessage = await this.alertCtrl.create({ inputs });
  await alertMessage.present();
}
...