Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular 2:如何检测组件上输入属性的属性更改?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Angular 2控制器,看起来像这样
@Component({
  SELEctor: 'my-component',template: '<div>The value is: {{ value }}</div>',})
class MyComponent implements OnInit {
  @input()
  value: String;

  @Output
  valueChange = new EventEmitter<number>();

  ngOnInit() {
    this.valueChange.subscribe(value => {
      console.log('new value:',value); // <-- does not get triggered
    });
  }
}

但是当值的值从模板绑定更改时:

<my-component [value]="someValue" /> <!-- valueChange not triggered! -->

valueChange事件未被触发,因此即使模板正确更新并显示新值,组件也不知道它已被更改.

如何检测控制器上的输入属性何时更改?

在我看来,输出你的组件向其他人发出事件所以他们会在必要时更新他们的视图,它应该只用于内部需要广播的更改(因此名称为Output).在输入更改上触发输出事件可能会导致意外行为(因为现在内部和外部的所有更改都会触发valueChange,而不再是输出).

你的情况下,如果你想在价值变化时做一些事情,你可以把它变成一个设定者:

private _value: String;
get value(): String {
  return this._value;
}

@Input('value')
set value(val: String) {
  this._value = val;
  console.log('new value:',value); // <-- do your logic here!
}

大佬总结

以上是大佬教程为你收集整理的Angular 2:如何检测组件上输入属性的属性更改?全部内容,希望文章能够帮你解决Angular 2:如何检测组件上输入属性的属性更改?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。