2016-11-10 51 views
2

我正在開發一個小型的Angular 2 To-do應用程序。我不希望瀏覽器與日期,日期時間本地等輸入類型的兼容性有任何問題,所以我確實爲用戶輸入了<select>輸入以輸入日期和時間。一切工作正常,輸入是動態的,所以用戶不能選擇不存在的一天(如02/29/2017)等。表單不發送在Angular 2中的選擇和複選框輸入

問題是,我想發送表單的數據到服務,然後到我的應用程序的後端,但是當我提交表單時,來自<select>輸入的值不包含在發送的對象中,以及我的複選框輸入中。我不經常使用這些類型的輸入,所以我很抱歉,如果這是一個不好的問題,但我無法弄清楚我做錯了什麼。

下面是代碼:

<form #f="ngForm" (ngSubmit)="add(f.value)"> 

    <div *ngIf="error"> 
     <p>{{ error }}</p> 
    </div> 
    <div class="login-input-container"> 
     <input type="text" placeholder="title" name="title" ngModel autocomplete="off" required minlength="1" maxlength="100"> 
    </div> 
    <div class="login-input-container"> 
     <div class="datetime-container"> 
      <div> 
       <select #year name="year" (change)="showMonths(); selectedYear = year.value; yearDays(year.value);" required> 
        <option class="invisible" value="" disabled selected>year</option> 
        <option *ngFor="let year of years" [value]="year" placeholder="year">{{ year }}</option> 
       </select> 
       <select #month *ngIf="showedMonths" name="month" (change)="showDays(month.value, year.value); selectedMonth = month.value;" required> 
        <option class="invisible" value="" disabled selected>M</option> 
        <option *ngFor="let month of months" [value]="month">{{ month }}</option> 
       </select> 
       <select *ngIf="showedDays" name="day" (change)="showTime()" required> 
        <option class="invisible" value="" disabled selected>d</option> 
        <option *ngFor="let day of days" [value]="day">{{ day }}</option> 
       </select> 
      </div> 
      <div *ngIf="showedTime"> 
       <select name="hours" required> 
        <option class="invisible" value="" disabled selected>hh</option> 
        <option *ngFor="let hour of hours" [value]="hour">{{ hour }}</option> 
       </select> 
       : 
       <select name="minutes" required> 
        <option class="invisible" value="" disabled selected>mm</option> 
        <option *ngFor="let minute of minutes" [value]="minute">{{ minute }}</option> 
       </select> 
      </div> 
     </div> 
    </div> 
    <div class="login-input-container"> 
     <textarea id="todo-description" type="text" placeholder="description (optional)" name="description" ngModel autocomplete="off" minlength="1" maxlength="500"></textarea> 
    </div> 
    <div class="login-input-container"> 
     <span><p>should we notify you?</p><label for="notify-1"><input id="notify-1" type="checkbox" [checked]="todo.notify" value="1"><span></span></label></span> 
    </div> 
    <div class="login-input-container"> 
     <input type="submit" value="Submit" (click)="error = ''"> 
    </div> 

</form> 

回答

2

如果使用[value][ngValue]你需要使用[(ngModel)]ngModel (ngModelChange)="showMonths()...",而不是`(其他城市)= 「...」

+0

謝謝。我剛剛將ngModels添加到沒有工作的輸入中,但還有另一個問題 - 當我對這​​些輸入具有* ngIf條件時,它不想工作。他們對我來說很重要。 –

+0

「它」和「不想工作」是什麼意思? –

+1

哦,對不起。我在閱讀錯誤日誌時犯了一個錯誤。我把ngModel放在複選框上,我沒有在那裏指定名稱。謝謝您的回答。 –

相關問題