2017-08-02 18 views
0

デフォルトでは、[月]オプションが必要です。私はngModelがngForリストで使用されている例を見てきましたが、私の場合はうまくいきません。誰もが解決策を知っていますか?角4デフォルトで選択されたngModelなしのオプション

テンプレート:

<select class="form-control" (change)="onAmountChanged(tippanel)" [(ngModel)]="tip.Period"> 
           <option value="FourWeeks">Per 4 weken</option> 
           <option [selected]="period == 'Month'" value="Month">Per maand</option> 
           <option value="Quarter">Per kwartaal</option> 
           <option value="Year">Per jaar</option> 
          </select> 

コンポーネント:

onAmountChanged(tippanel: GeldzorgenTipGroup) { 

    let total = 0; 
    for (var tip of tippanel.Tips) { 
     if (tip.InputValue > 0) { 
      if (tip.Period) 
      { 
       total += this.getValuePerMonth(tip.Period, tip.InputValue); 
      } else { 
       total += tip.InputValue; 
      } 
     } 
     console.log(tip.Period); 
    } 

    tippanel.tipTotal = total; 

    this.onInputChange.emit(true); 
} 

getValuePerMonth(period: string, value: number): number { 
    switch (period) 
    { 
     case "FourWeeks": return (value * 13)/12; 
     case "Quarter": return value/3; 
     case "Year": return value/12; 
     default: 
     case "Month": return value; 
    } 
} 
+1

あなたの質問のタイトルはちょっとあなたの実際の質問に矛盾しますか?あなたは 'ngModel'なしでそれをしたいのですか、それともちょうど「うまくいきませんか」ですか? – Alex

+0

@ AJT_82 'ngModel'は' ngModel'を使わずに使いたいのですが、 'ngModel'はすでに何か他のものに使われていますが、' ngModel'で両方を動かす方法があれば、それもいいです – Wahid

答えて

0

あなたがngModelを使用している場合は、value="..."を使用しない、代わりに(ngModelChange)を使用して、デフォルト値を設定するには、(change)を使用していません代わりにデフォルト値をtip.Periodに割り当てるか、モデルを[(ngModel)]="..."にバインドするかを指定します(または、ngModelChange pro bably良く[ngModel]="..."

class MyComponent { 
    selected:string = 'Month'; 

    onAmountChanged(tippanel) { 
    tip.Period = tippanel; 
    ... 
    } 
<select class="form-control" (ngModelChange)="onAmountChanged($event)" [ngModel]="selected"> 
    <option value="FourWeeks">Per 4 weken</option> 
    <option value="Month">Per maand</option> 
    <option value="Quarter">Per kwartaal</option> 
    <option value="Year">Per jaar</option> 
</select> 
+0

私はこれを試しました。選択されたオプションの値が呼び出されないようです。私はOPにいくつかのコードを追加しました。おそらくそれが理由を明らかにする可能性があります。また、私はティパネルが何か他のものであるので、ティップチャンネルにtip.Periodを設定することはできません。 – Wahid

+0

onAmountChanged(tippanel)に 'tippanel'とは何ですか?あなたが追加したコードが何をすべきか分かりません。 –

+0

onAmountChanged(tippanel)の 'tippanel'は、関数内で使用されるモデルです。だから、私たちは、モデルの「チップ」モデルを持っている「チッパネル」と、「チップ」モデルは、期間を持っています。 'tip'の中の入力値は' tippanel'の合計値に加えられます。選択された期間は、月、4週間などのための 'tippanel'合計を計算します。 – Wahid

関連する問題