无论分离设置如何,单击事件似乎都会发生更改检测

gar*_*hdn 1 angular2-changedetection angular

这可能是我自己的2变化检测如何角的作品,但我本来期望,如果一个组件的误解ChangeDetectionStrategy设置为CheckedCheckOnceDetached,那该组件是只检查时组件实例一次变化。它似乎不会那样发生。

import {Component, OnInit, ChangeDetectionStrategy} from 'angular2/core'

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <button 
        (click)="onClick($event)" 
        [class.thing]="hasThingClass()">Update</button>
    </div>
  `,
  changeDetection:ChangeDetectionStrategy.CheckOnce,
  styles: [`
    .thing { background-color: red }
  `]
})

export class App implements OnInit {

  public hasThing:Boolean = false;

  onClick() {
    this.hasThing = !this.hasThing;
  }

  hasThingClass(e) {
    return this.hasThing;
  }

}
Run Code Online (Sandbox Code Playgroud)

单击时,我本来希望切换hasThing属性,但我不希望视图更新。碰巧,视图会更新。ChangeDetectionStrategy设置为Detached也时发生。

http://plnkr.co/edit/2hHdt2BDpj419Z32iPjJ?p=preview

我在这里缺少什么?究竟是什么导致视图更新?从我所见,无论我更新hasThing属性,无论值是否已更改,视图都会在单击时更新。

Mar*_*cok 6

无论 ChangeDetectionStrategy 设置如何,Angular 都会在任何时候检查组件的更改

  • 组件触发一个事件
  • 一个 observable 触发一个事件,并且在视图中使用异步管道和那个 observable

这个想法是......如果组件触发了一个事件,或者绑定的可观察值发生了变化,你很可能想要更新它的视图。