Angular 调用toISOString()thows";ExpressionChangedTerithasBeenCheckedError:表达式在选中后已更改;
我在组件中有此方法:Angular 调用toISOString()thows";ExpressionChangedTerithasBeenCheckedError:表达式在选中后已更改;,angular,iso8601,Angular,Iso8601,我在组件中有此方法: getTime():日期{ const date=新日期(); date.setHours(本小时); date.setMinutes(本.minutes); 日期。设置秒(0); 返回日期; } 我称之为另一个: 但是,即使正确生成了字符串(至少JSON是这样的): 我得到了这个错误: CreateGroupComponent.html:40 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expr
getTime():日期{
const date=新日期();
date.setHours(本小时);
date.setMinutes(本.minutes);
日期。设置秒(0);
返回日期;
}
我称之为另一个:
但是,即使正确生成了字符串(至少JSON是这样的):
我得到了这个错误:
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
??对我来说,这应该是
2017-11-14T10:30:00.271Z+01:00
这是因为每次调用getTime
时,毫秒数都会发生变化,这就是错误所说的
应该是:
getTime(): Date {
const date = new Date();
date.setHours(this.hour);
date.setMinutes(this.minute);
date.setSeconds(0);
date.setMilliseconds(0);
return date;
}
关于时区,各国
方法返回简化的扩展ISO格式(ISO 8601)的字符串。时区始终为零UTC偏移量,由后缀“Z”表示
如果需要本地时间,请参阅以获取可能的解决方案。这是因为每次getTime
调用都会更改毫秒数,这就是错误所说的
应该是:
getTime(): Date {
const date = new Date();
date.setHours(this.hour);
date.setMinutes(this.minute);
date.setSeconds(0);
date.setMilliseconds(0);
return date;
}
关于时区,各国
方法返回简化的扩展ISO格式(ISO 8601)的字符串。时区始终为零UTC偏移量,由后缀“Z”表示
如果需要本地时间,请参阅以获取可能的解决方案。Btw,为什么ngModel和表单控件同时存在?通常它们是互斥的。顺便问一下,为什么ngModel和表单控件同时存在?通常它们是相互排斥的。