如何像使用$ watch在Angular 1中一样观察Angular 2中的复杂对象

Mad*_*jan 5 angularjs typescript1.8 angular

我们能够$watch在复杂对象上应用,如何在Angular 2中进行类似操作。

角度1

$scope.data = {name : "somvalue"}
$scope.$watch('data.name', function(newValue, oldValue) {
    scope.counter = scope.counter + 1;
});
Run Code Online (Sandbox Code Playgroud)

角度2

export class MyData{
   name: string;
} 

export class MyComponent implements OnInit {
   @Input() data: MyData;

   constructor(private ds: MyService){
      this.data = ds.data;
   }

   // $watch('data.name', function(newValue, oldValue) {
   //   scope.counter = scope.counter + 1;
   // });
}
Run Code Online (Sandbox Code Playgroud)

现在,如果data.name服务发生变化,如何监视组件本身的变化,请注意数据不是可观察的,它只是一个常规对象。

更新资料

请参阅示例的Plunk

提前致谢!!

Gün*_*uer 3

Angular 会检查属性,甚至在对象内部(如果它们绑定到模板中)。

对于复杂对象,首选选项是Observable主动通知 Angular2 有关更改的信息。

您还可以通过实施来使用自定义更改检测DoCheck