Выпадающий список Anguar (выберите) проверка не работает

#angular

#angular

Вопрос:

Привет, я создаю веб-страницу справки в Angular, там пользователь может отправлять «Заявки», но я застрял, проверив выбор, я получаю следующее сообщение об ОШИБКЕ:

  TS2339: Property 'selected' does not exist on type 'HelpComponent'.  
 <div *ngIf="selected.untouched" class="alert alert-danger">
  

и вот что я делаю в моем HTML :

 <div class="form-group">
        <label for="selected">Was ist das Problem?*</label>
        <select   name="selected" id="selected" class="form-control" 
                  required fullWidth [ngModel]="ticket.selected">  
          <option value="null">Was ist das Problem?</option>
          <option *ngFor="let select of selectObtions">
            {{ select.name }} 
          </option>
        </select>
        <div *ngIf="selected.untouched" class="alert alert-danger">
            Es wurde kein Grund Gewählt
        </div>
      </div>
  

компонент:

 export class HelpComponent {
  private index: number = 0;

  constructor(private toastrService: NbToastrService) { }
  
  selectObtions = 
  [
    {id: 1, name: "SCAM ich will mein geld zurück"},
    {id: 2, name: "Seite lädt nicht Korrekt"},
    {id: 3, name: "Wie kann ich meine Daten ändern"},
    {id: 4, name: "ich finde mich nicht zurecht"},
  ]

  ticket = new Ticket()
  
  ticketSend(status: NbComponentStatus){
    this.ticket.selected = (<HTMLInputElement>document.getElementById("selected")).value;
    this.ticket.vorname = (<HTMLInputElement>document.getElementById("vorname")).value;
    this.ticket.nachname = (<HTMLInputElement>document.getElementById("nachname")).value;
    this.ticket.email= (<HTMLInputElement>document.getElementById("email")).value;
    this.ticket.textfeld= (<HTMLInputElement>document.getElementById("textfeld")).value;


    this.toastrService.show(`Vielen Danke ${this.ticket.vorname} ${this.ticket.nachname} das Sie das Problem ${this.ticket.textfeld} gemeldet habenn wir werden uns so schnell es geht bei dieser E-mail adresse ${this.ticket.email} melden`, `Ticket ${this.ticket.selected} wurde gesendet`, { status, duration: 0,});
  }
}
export class Ticket{
    selected: string;
    vorname: string;
    nachname: string;
    email: string;
    textfeld: string;
}
  

Что не так, я не понимаю. Ввод работает нормально, но не выбор.

Комментарии:

1. Не могли бы вы также предоставить свой typescript код HelpComponent?

Ответ №1:

Вы можете реализовать явный тест :

объявите SelectedItem и ErrorMessage в компоненте веб-страницы справки;

 selectedItem = -1 ;
  errorMessage : boolean  = false ; 
 //change this with your selected content 
 selectObtions  = [
   { 
    id : 1,
    name : 'name  1 ' , 
   },
   {
    id : 2,
    name : 'name  2 ' , 
  },
  {
   id : 3,
   name : 'name  3 ' ,  
  }
]; 
Send(){
 if (this.selectedItem==-1){
   this.errorMessage = true ;
 } 
 else {
   this.errorMessage = false ; 
   //send the ticket !
 }
}
  

и в HTML-файле :

 <div class="form-group">
<label for="selected">Was ist das Problem?*</label>
<select   name="selected" id="selected" class="form-control" 
          required fullWidth  [(ngModel)]="selectedItem" >  
  <option [value]=-1>Was ist das Problem?</option>
  <option *ngFor="let select of selectObtions" value={{select.id}}>
    {{ select.name }} 
  </option>
</select>
<div *ngIf="errorMessage==trueamp;amp;selectedItem==-1" class="alert alert-danger">
    Es wurde kein Grund Gewählt
</div>

<button (click)="Send()" >Send</button>