2016-11-23 22 views
0

私は時間、分、秒を別々の入力に持つ時間ピッカーコンポーネントを作成しようとしています。これは、minとmaxの2つの異なるタイムスタンプの間で制御する必要があります。angular2入力番号エラー

別々のフィールドは正常に動作しますが、最小値と最大値は正常ですが入力はしません。

私は

<input 
    type = number 
    name = hour 
    [ngModel] = _hour 
    (ngModelChange) = updateHour($event) 
    [min] = _minHour 
    [max] = _maxHour 
    placeholder = 00> 

2388セット最大に入る(予想通り)(予想通り)他8セット23にngModel次いで入るが、入力が(間違っている)238

表示私はプランクをしました https://plnkr.co/edit/XUWOim?p=preview

アイデア?

+2

残念ながら、これはネイティブ要素の制限であるようです。送信時にのみエラーメッセージが表示されます: http://jsfiddle.net/TAftq/(別のstackoverflowトピックから取得)。 Chromeでテスト済みです。 Firefoxでも入力値が制限されていないようです:https://bugs.chromium.org/p/chromium/issues/detail?id=365196 この問題を解決するには、サードパーティのコンポーネントを使用する必要があると思います。 –

答えて

1

私のソリューション:

  1. パス入力要素パラメータとしてupdateHour機能の

    <input #hour 
         type = number 
         name = hour 
         [ngModel] = _hour 
         (ngModelChange) = "updateHour($event, hour)" 
         [min] = _minHour 
         [max] = _maxHour 
         placeholder = 00> 
    
  2. 設定入力値が(検証後)の値を修正する

    updateHour(value:string, hourElement: ElementRef){ 
         let intValue: number = Math.max(this._minHour, Math.min(this._maxHour, parseInt(value))) || 0; 
         hourElement.value = intValue; 
         this.time.setHours(intValue); 
         } 
    

    しないでくださいElementRefをインポートするのを忘れないでください

     import {Component, NgModule, OnInit, ElementRef} from '@angular/core' 
    
+0

それは醜いですが、それは目を引く。どうもありがとう! – subarroca