自Angular 4以来,更改检测中断没有错误

时间:2017-04-13 09:27:02

标签: angular typescript

我的服务中有一个特定的属性在我将视图绑定到某个地方时会破坏我的所有视图绑定/更改检测。这是因为我从Angular 2.x更新到4.0.2

关于环境

为了解决这个问题,我创建了一个简单的BindingTestComponent。模板看起来像这样:

<button (click)="toggleName()">Toggle Name</button>
<div>Test: {{name}}!</div>

BindingTestComponent打字稿不仅仅是这个:

name : string = 'Tom';
toggleName() {
    this.name = this.name === 'Tom' ? 'Jerry' : 'Tom';
}

现在我可以点击按钮,名字在Tom和Jerry之间切换。

当我在同一视图中的其他地方使用workTime.duration同时包含BindingTestComponent时,会出现此问题。像:

<div>{{workTime.duration}}</div>
<binding-test></binding-test>

当我点击»切换名称«按钮时,没有任何反应。浏览器控制台遗憾地显示没有错误。

有趣的是,我可以使用ChangeDetectorRef来修复BindingTextComponent行为,如下所示:

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;
}

我猜这个属性永远不会稳定的问题。每次请求时它都有不同的值。但是..

我该如何解决这个问题?

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

0 个答案:

没有答案