Как я могу использовать переключатель для выбора пола в моем ионном 3 угловом приложении? - PullRequest
0 голосов
/ 16 октября 2018

Я новичок в угловой и ionic 3.Теперь только я учусь этому.

В настоящее время я использую угловые формы для получения сведений о сотруднике и сохранения их в таблице базы данных.

Содержит следующие поля firstname, lastname, gender, DOB, Departmnet и т. Д.

Для пола в настоящее время я использую modal drop-down box, который содержит два значения (мужской и женский) и выбираю его.

Мне нужно использовать радиокнопку для выбора вместо модального раскрывающегося списка.

Как это реализовать??

Пожалуйста, ведите меня.Я только немного знаю в HTML и CSS тоже.Пожалуйста, в настоящее время нужна ваша помощь, ребята.Пример ссылки или учебник высоко ценится.Я уже пытался реализовать переключатели, используя <ion-list>, но это приводит к проблемам с выравниванием.

Я упомянул здесь все, что я пробовал до сих пор.

employee-details.html:

<ion-item no-lines>
<ion-icon class="iconstyle" name="md-contacts" item-start></ion-icon>
<ion-label floating color="primary">Gender</ion-label>
<ion-select class="mydate" formControlName="gender" [(ngModel)]="vm.gender" class="textcolor" value="gender">
<ion-option *ngFor="let item of genderlist" value="{{item.key}}">{{item.value}}</ion-option>
</ion-select>
</ion-item>
<div class="error-message-emp" *ngIf="formemp.controls.gender.errors && (formemp.controls.gender.dirty || formemp.controls.gender.touched)">
<span *ngIf="formemp.controls.gender.errors?.required">Gender is required</span>
</div>

Здесь я указал, как я взял ключевые значения для пола в массиве

employee-details.ts:

import { Component } from '@angular/core';
import {IonicPage, NavController, NavParams, Platform } from 'ionic-angular';
import {EmployeeService} from '../../services/employee.service';
import {compareValidator} from '../../shared/directives/comparevalidator';
import { MessageService } from '../../services/message.service';
import { Keyboard } from '@ionic-native/keyboard';

import { BroadCastService } from '../../services/broadcast.service';
import { isNullOrUndefined } from 'util';
import { Employee } from '../../models/employee';
import { FormGroup, FormControl, Validators, AbstractControl} from '@angular/forms';

/**
 * Generated class for the EmployeeDetailsPage page.
 *
 * See https://ionicframework.com/docs/components/#navigation for more info on
 * Ionic pages and navigation.
 */

@IonicPage()
@Component({
  selector: 'page-employee-details',
  templateUrl: 'employee-details.html',
  providers :[EmployeeService]
})
export class EmployeeDetailsPage {
  formemp: FormGroup;
  value: any;
  setdeptlist = [];
  emailpattern: string = "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,3}$";
  vm: Employee;



  constructor(public navCtrl: NavController, public navParams: NavParams, private employeeservice: EmployeeService, private message: MessageService,private platform: Platform,  public keyboard: Keyboard, public broadCastService: BroadCastService,) 
  {
    employeeservice.getdepartment().subscribe(res =>{
      console.log(res);
      if(!isNullOrUndefined(res)) {
        this.setdeptlist = res;

      }
    })
    this.vm = new Employee();

  }

    ngOnInit() {
      this.initializeValidators();
    }
    initializeValidators(){
      this.formemp = new FormGroup({
        firstname : new FormControl ('', [Validators.required]),
        lastname : new FormControl ('', [Validators.required]),
        dob: new FormControl('', Validators.required),
        email: new FormControl('', {
          validators: [Validators.required, Validators.pattern(this.emailpattern)]
        }),
        gender: new FormControl('', Validators.required),
        dept: new FormControl('', Validators.required),
        others: new FormControl(null)

})
}
    resetForm(formGroup: FormGroup) {
      let control: AbstractControl = null;
      formGroup.reset();
      formGroup.markAsUntouched();
      Object.keys(formGroup.controls).forEach((name) => {
        control = formGroup.controls[name];
        control.setErrors(null);
      });
      this.initializeValidators();
    }
    submit(){
      if(this.formemp.valid){
        this.employeeservice.saveemployee(this.vm).subscribe(res=>{
          console.log(res);
          this.message.alert("Details has been added Successfully");
          this.resetForm(this.formemp);
        }, err => {
          this.message.alert(JSON.stringify(err.error));
      } )
      }
      else {
        this.validateFormControl(this.formemp);
      }
    }

departmentChange(event){
      debugger;
var check = event;
 var che =this.vm.dept;
 const others = this.formemp.get('others');
 if(this.vm.dept == "6" ){
   others.setValidators(Validators.required);

 }
 else{
   others.clearValidators();
 }
 others.updateValueAndValidity();

    }

  ionViewDidLoad() {
    console.log('ionViewDidLoad EmployeeDetailsPage');
  }

  moveFocus(event, nextElement, isLastControl) {
    if (event.key === 'Enter') {
      if (isLastControl && isLastControl === false)
          nextElement.setFocus();
      else if (isLastControl && isLastControl === true)
          this.submit();
  }
  }
  validateFormControl(formGroup: FormGroup) {
    Object.keys(formGroup.controls).forEach(field => {
      const control = formGroup.get(field);
      if (control instanceof FormControl) {
        control.markAsTouched({ onlySelf: true });
      } else if (control instanceof FormGroup) {
        this.validateFormControl(control);
      }
    });
  }
  genderlist = [
    { key: 1, value: "Male" },
    { key: 2, value: "Female" }
  ];
}

Здесь я упомянул свой класс обслуживания для получения значения пола от API

employee-service.ts:

import { Injectable } from "@angular/core";
import { DataService } from "./data.service";


@Injectable()
export class EmployeeService {
    constructor(private dataservice: DataService) {

    }
    getgender(){
        return this.dataservice.getData('/api/lookup/getgender',true);
    }
}

Пожалуйста, помогитея, ребята.Миллион заранее.

1 Ответ

0 голосов
/ 16 октября 2018

для вашего <ion-select> кода это должно выглядеть так:

<ion-item no-lines>
        <ion-icon class="iconstyle" name="md-contacts" item-start></ion-icon>
        <ion-label floating color="primary">Gender</ion-label>
        <ion-select class="mydate" formControlName="gender" [(ngModel)]="gender" class="textcolor" value="gender">
          <ion-option *ngFor="let item of genderlist" value="{{item.key}}">{{item.value}}</ion-option>
        </ion-select>
    </ion-item>

Что касается элементов управления формой внизу в выражениях div и span, возможно, вам придется обновить свой вопрос, добавив больше кода employee-details.ts.Я прокомментировал эти два утверждения, и отбор работал отлично.

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