Преобразование ионного типа из строки в число - PullRequest
0 голосов
/ 03 января 2019

Я довольно новичок в области ионной и мобильной разработки в целом, и я работаю над проектом, у которого есть свойство со строковым значением в ионном сегменте.Этот ионный сегмент содержит две кнопки ионного сегмента, значение одной кнопки равно «1» для «Да», а значение другой кнопки «2» для «Нет». Когда пользователь нажимает кнопку «Да», включается раздел комментариев, если пользователь нажимает кнопку «Нет».Кнопка раздела комментариев отключена.Это значение свойства привязывается к свойству на странице модели с помощью ngModel.Затем это значение свойства необходимо преобразовать в числовое значение, когда оно передается в бэкэнд в полезной нагрузке JSON после передачи полезной нагрузки.Я обнаружил, что если я просто объявляю это свойство как число, оно нарушает функциональность включения / выключения комментария, и когда значение передается, оно все равно отправляет свойство как строковое значение.Я ищу способ преобразования значения свойства из строки в число при отправке полезной нагрузки JSON.

Это то, что у меня сейчас есть:

Значение свойства, объявленное на странице модели с именем formPS4588

public safeWorkPracticesWereDemonstrated: any = '0';

HTML-файл

<ion-item-group>
    <ion-item-divider class="form-header">
      Safe Work Practices`
    </ion-item-divider>
    <ion-item>
        <p>
            S42 Safe work practices were demonstrated
        </p>
        <ion-segment [(ngModel)]="form.safeWorkPracticesWereDemonstrated">
            <ion-segment-button value="1" >Yes</ion-segment-button>
            <ion-segment-button value="2" (ionSelect)="tapSafeWorkPracticesNo()">No</ion-segment-button>
        </ion-segment>
    </ion-item>
    <ion-item>
        <ion-label stacked>Safe Work Practice Recognition</ion-label>
        <ion-textarea autoresize placeholder="Safe Work Practice Recognition" [disabled]="disableSafeWorkPractices()"
                      [(ngModel)]="form.safeWorkPracticeRecognition"></ion-textarea>
    </ion-item>
</ion-item-group>

Файл TS

public disableSafeWorkPractices(): boolean {
    return (this.form as FormPS4588).safeWorkPracticesWereDemonstrated !== '1';
}


private submitForm(): void {
    console.log('submitForm()');
    this.form.updateObservationTimeTo();

    let safeWorkPracticesWereDemonstrated = this.formPS4588.safeWorkPracticesWereDemonstrated;

    this.formPS4588.change(safeWorkPracticesWereDemonstrated);

    this.observation.confirmSubmitted();

    this.backendService.postObservation(this.observation, this.form).then((result) => {
        console.log(result);

        this.scheduledObservation.confirmSubmitted();

        this.loadingCtrl.create({
            content: result,
            duration: 1000
        }).present();

        this.exitForm();
    });
}

функция преобразования, объявленная на странице модели с именем formPS4588

public change(safeWorkPracticesWereDemonstrated: any): void {
    Number(safeWorkPracticesWereDemonstrated);
}

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Мне кажется, я смог реализовать решение, связав функцию преобразования для значения свойства, когда пользователь нажимает кнопку отправки для отправки формы.

<ion-item-group padding>
    <button ion-button block [disabled]="!isObservationCriteriaMet()" (tap)="doSubmit(); change();">Submit</button>
</ion-item-group>

public change(): void {

    (this.form as FormPS4588).safeWorkPracticesWereDemonstrated = Number((this.form as FormPS4588).safeWorkPracticesWereDemonstrated);

}
0 голосов
/ 03 января 2019

Что вы делаете неправильно, так это то, что вы на самом деле не меняете значение.Вместо этого:

this.formPS4588.change(safeWorkPracticesWereDemonstrated);

Вы должны сделать что-то вроде этого:

this.safeWorkPracticesWereDemonstrated = Number(safeWorkPracticesWereDemonstrated);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...