Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2设定器vs ngOnChanges_Javascript_Angular - Fatal编程技术网

Javascript 角度2设定器vs ngOnChanges

Javascript 角度2设定器vs ngOnChanges,javascript,angular,Javascript,Angular,当您想在组件/指令输入更改后运行某些代码时,可以使用setter或ngOnChangeshook,但是在另一个上使用一个有什么好处?或者它们是完全相同的东西 @Input() set someInput( val ) { this.runSomething(); } ngOnChanges(changes) { this.runSomething(); } ngOnChanges()的一个优点是,如果您的组件有多个@Input()s,您可以一次获得所有更

当您想在组件/指令输入更改后运行某些代码时,可以使用setter或
ngOnChanges
hook,但是在另一个上使用一个有什么好处?或者它们是完全相同的东西

  @Input()
  set someInput( val ) {
    this.runSomething();
  }

  ngOnChanges(changes) {
     this.runSomething();
  }

ngOnChanges()
的一个优点是,如果您的组件有多个
@Input()
s,您可以一次获得所有更改。

如果您的代码只依赖于一个
@Input()
设置器可能是更好的方法。

但是如果组件有许多输入,那么
ngOnChanges
方法不是成为几个可能不相关的东西的地方吗?这就是我所说的“如果您的代码只依赖于一个
@Input()
…”的意思。如果在单个特定输入发生变化时应该执行的代码,那么将输入设置为setter可能是更好的方法。回答不错。所以我知道当@input用作setter时不会调用ngOnchanges。@kartik无论
@input
是否为setter。如果倒角检测更新任何输入,它将调用ngOnChangesafterwards@GünterZöchbauer有关于绩效影响的线索吗?看起来`onChanges(changes){if(changes.someInput){this.runSomething()}}`应该与setter相同吗?