Angular 从角度4开始,无错误地更改检测中断

Angular 从角度4开始,无错误地更改检测中断,angular,typescript,Angular,Typescript,我的服务中有一个特定属性,当我在视图中的某个位置绑定它时,它会破坏所有视图绑定/更改检测。这发生在我从Angular 2.x更新到4.0.2之后 关于环境 为了解决这个问题,我创建了一个简单的BindingTestComponent。模板如下所示: <button (click)="toggleName()">Toggle Name</button> <div>Test: {{name}}!</div> 现在我可以点击按钮,名字在汤姆和杰瑞之间

我的服务中有一个特定属性,当我在视图中的某个位置绑定它时,它会破坏所有视图绑定/更改检测。这发生在我从Angular 2.x更新到4.0.2之后


关于环境 为了解决这个问题,我创建了一个简单的BindingTestComponent。模板如下所示:

<button (click)="toggleName()">Toggle Name</button>
<div>Test: {{name}}!</div>
现在我可以点击按钮,名字在汤姆和杰瑞之间切换

当我在同样包含BindingTestComponent的视图中的其他地方使用
workTime.duration
时,就会出现这个问题。比如:

<div>{{workTime.duration}}</div>
<binding-test></binding-test>
关于服务属性 它返回的持续时间如下所示:

get duration() {
  let currentTime = new Date();
  let startedWork = new Date(1492074996355);
  return currentTime - startedWork;
}

我可以猜测,这是一个问题,即房地产从来都不稳定。每次您请求它时,它都有不同的值。但是

我如何解决这个问题?


这难道不应该在浏览器控制台中给我一个错误吗?

我认为它工作正常。v4之前有一个bug。评论说»…你应该预料到这种错误…«但我没有得到错误。不再检测到任何更改。不在BindingTestComponent中,也不在我视图中包含的任何其他组件中。您能创建一个plunker吗?@yurzui我尝试过,但它给了我一个错误。遗憾的是,我看不出我的设置和plunker有什么不同。无论如何,谢谢你。
toggleName() {
    this.name = this.name === 'Tom' ? 'Jerry' : 'Tom';
    this.cdRef.detectChanges();
}
get duration() {
  let currentTime = new Date();
  let startedWork = new Date(1492074996355);
  return currentTime - startedWork;
}