如何在角度为2的div中检测内部html变化?

时间:2017-03-04 13:15:26

标签: angular typescript

我有一个像

这样的组件
@Component({
  selector: 'my-component',
  template: '<div id="myDiv">Some value comes here dynamically from server</div>',
})
class MyComponent implements OnInit {
@Input()

  ngOnInit() {
      //execute my function when a content change is occured in #myDiv      
  });
 }
}

如果在#34;#myDiv&#34;中发生内容更改我想执行一个函数。 我该如何实现此功能? 我还尝试了角度的(变化)事件。

1 个答案:

答案 0 :(得分:3)

虽然它看起来很简单,但可以使用子组件和输入,输出变量来实现。

用于显示服务内容的子组件

@Component({
  selector: 'title',
  template: `
    <div> {{title}}</div> 
  `,
})
export class TitleComponent implements ngOnChanges{

  @Input() title:string="";
  @Output() titleChanged:EventEmitter<string>=new EventEmitter<string>();
  constructor(){
  //service call goes here
  }
  ngOnChanges(){
  console.log(this.val);
  this.titleChanged.emit(this.title);
  } 

}

父组件将为

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <title (titleChanged)="changedTitle($event)" [title]="title"></title>
    </div>
  `,
})
export class App {
  name:string; 
  title:string="some title";
  val:string;
  constructor() {
    this.val="";

  }

   changedTitle(va){
    console.log(va);

  }
}

说明:

  1. 进行服务呼叫并更改标题值时。
  2. 在更改输入属性时,将自动触发ngOnChanges。
  3. titleChanged 是Output()变量,并在执行ngOnChanges时发出一个值。
  4. 触发titleChanged时,将执行 changedTitle()中的关联方法。
  5. <强> LIVE DEMO

    注意:为了表明这是有效的,我使用了一个文本框并将其分配给div元素。