2016-11-25 8 views
1

私は問題をもう少し具体的にしてみましょう - 私はngForにする場合、戻り値をバインドすることができます。Objectメソッドの戻り値をAngular 2のDOMにバインドするにはどうすればよいですか?

<select id="addTimeslotSelect" style="height:24px; background-color:rgb(235, 235, 228);" disabled> 
    <option *ngFor="let day of days" data-value="{{day}}" data-label="{{day.toDateString()}}"></option> 
</select> 

day.toDateString()が正常に動作します。しかし、私がngFor以外の特定のインデックスにアクセスしたいとき、私はそれを働かせるように見えません。

<input id="addTimeslotTextbox" data-value="{{days[days.length-1].toLocaleDateString()}}" type="text" disabled/> 

日[days.length-1] .toLocaleDateString()はここでは機能しません。私は次のエラーが表示されます: "未定義のプロパティ 'toLocaleDateString'を読み取ることができません

誰かが前者の場合と後者ではうまくいかない理由についての洞察を持っている場合、

+1

elvis演算子を使用してみてください。 '{{days [days.length-1]?toLocaleDateString()}}'。おそらくビューが初期化された日配列が定義されていない場合 – masimplo

+0

解決方法に時間がかかったり、決して起こらない場合、空白以外の何かを表示するためにデフォルトを提供することを見てきました。 (私はまだ「安全なナビゲーション」オペレータにとって少し新しいです): {{myObj?.value || '...'}} –

答えて

4

初期の変更検出では、daysアレイは初期化されていません。したがって、Navigation operatorElvis operator)をここで使用してください。

data-value="{{days[days.length-1]?.toLocaleDateString()}}" 
関連する問題