私はコンポーネントで、ここでこの方法を持っている:私は別の内呼んtoISOString()を呼び出すと、 "ExpressionChangedAfterItHasBeenCheckedError:式がチェックされた後に変更されました。"
getTime(): Date {
const date = new Date();
date.setHours(this.hour);
date.setMinutes(this.minute);
date.setSeconds(0);
return date;
}
:
<input matInput [hidden]="true" formControlName="time"
[ngModel]="this.timePicker.getTime().toISOString()"/>
しかし、string
が正しく生成されますにもかかわらず、(少なくとも、それはJSONがどのように見えるかです) :
"time": "2017-11-14T10:30:00.271Z"
私はこのエラーを取得しています:
CreateGroupComponent.html:40 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '2017-11-14T10:30:00.338Z'. Current value: '2017-11-14T10:30:00.341Z'.
at viewDebugError (core.js:9514)
at expressionChangedAfterItHasBeenCheckedError (core.js:9492)
at checkBindingNoChanges (core.js:9661)
at checkNoChangesNodeInline (core.js:13674)
at checkNoChangesNode (core.js:13646)
at debugCheckNoChangesNode (
toISOString()
に電話する場合のみ、このエラーが表示されます。 Date
オブジェクトを返しても問題ありませんが、ISO文字列に変換するとその例外が発生します。どうして?
についてtoISOString()
を話す - どこ実際
2017-11-14T10:30:00.271Z
でタイムゾーン情報ですか?私にとって、実際にミリ秒ごとgetTime
呼び出しに変更するので、これが起こる
2017-11-14T10:30:00.271Z+01:00
Btw、なぜngModelとフォームコントロールが同時に存在するのですか?通常、それらは相互に排他的です。 – estus