改变检测角度2模型的属性

时间:2017-02-04 07:11:11

标签: angular reactivex

如果我的模型的 propery 发生了变化,我每次都需要调用一个JQuery函数。

person = {firstName:firstName, lastName:lastName}

作为示例如果我更改了person对象的 firstName 属性,每次我需要触发一个函数。实际上我需要订阅这个对象的属性。

怎么可能?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找DoChecklink to docs)生命周期钩子。这是在每轮完成变更检测后触发的事件。请记住,它可能会被触发很多,并且在该钩子中进行大量操作可能会对性能产生重大负面影响。

以下是查找person.firstName属性更改的示例,如果找到更改,则将其记录到控制台:

import { Component, DoCheck } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `<input type="text" [(ngModel)]="person.firstName">`,
  styleUrls: ['./app.component.css']
})
export class AppComponent implements DoCheck {
  person = { firstName: 'Donald', lastName: 'Duck' };
  oldFirstName: string;

  ngDoCheck() {
    if (this.person.firstName !== this.oldFirstName) {
      console.log(`Change first name from "${this.oldFirstName}" to "${this.person.firstName}"`);
      this.oldFirstName = this.person.firstName;
    }
  }
}