angular2 @input - 变化检测

Posted

技术标签:

【中文标题】angular2 @input - 变化检测【英文标题】:angular2 @input - change detection 【发布时间】:2017-06-03 06:31:10 【问题描述】:

有没有办法监听@Input 的变化?

在以下示例中,我希望在 'inputData' 值发生更改时得到通知。

@Input() inputData: InputData;

【问题讨论】:

【参考方案1】:
import  Component, Input, OnChanges, SimpleChange  from '@angular/core';


export class Demo implements OnChanges 

 @Input() inputData: InputData;
 ngOnChanges(changes: [propertyName: string]: SimpleChange) 

    if (changes['inputData'] && this.inputData) 

        //your logic work when input change
    
 


【讨论】:

【参考方案2】:

你可以使用类似的东西:

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

更多信息请访问link

你也可以看看this article

【讨论】:

【参考方案3】:

您可以在组件内收听OnChanges 组件生命周期事件

ngOnChanges(model: SimpleChanges)
   console.log(model)

【讨论】:

【参考方案4】:

是的,你可以使用OnChanges生命周期事件:

@Input() inputData: InputData;

ngOnChanges() 
    console.log(this.inputData);

阅读更多关于 Angular 的生命周期事件here。

【讨论】:

以上是关于angular2 @input - 变化检测的主要内容,如果未能解决你的问题,请参考以下文章

详解ANGULAR2组件中的变化检测机制(对比ANGULAR1的脏检测)

详解angular2组件中的变化检测机制(对比angular1的脏检测)

Angular2 中组件属性变化的可观察性

Angular项目实战Angular2的脏值检测机制

Angular 2:检测浏览器宽度的变化并更新模型

Angular 2,Eventemitter 会触发变化检测吗?