【问题标题】:Angular 4: how to react to @input variable changes [duplicate]Angular 4:如何对@input变量变化做出反应[重复]
【发布时间】:2018-01-24 22:11:55
【问题描述】:

我有一个子组件的模型输入变量。 @Input() 模型:任意;

我有一个父控件 parentControl,它将更新的输入变量发送到 childComponent。

如何编写 childComponent 代码以响应模型更改? 我希望在模型更改时调用 childComponent。

想法?

【问题讨论】:

标签: angular


【解决方案1】:

考虑使用ngOnChanges()生命周期

@Input() model: any;
ngOnChanges(model: any) {
    this.doSomething(model);
}

【讨论】:

  • 如果有多个输入参数,每个输入变量会有一个 ngOnChanges 吗?
  • 是的,你需要这样做,在 angular2 中没有像我们在 angularjs 中那样的监视组
  • @reza 不,你不知道,单个 ngOnChanges 方法的参数实际上是 SimpleChanges,其中包含对输入的 any 的更改。您可以在链接的文档中看到这一点,不知道作者为什么这么说。
  • @reza 是的,你是对的!实际上我提到了使用 set_method ,在这种情况下你需要单独的。但是 ngOnchanges 通常会在输入发生更改时给出任何输入。抱歉,我没有正确阅读您的评论。 angular.io/api/core/OnChanges
  • 这很接近,但实际上并不正确。我将举一个布尔数据绑定的例子 ``` @Input() yourData: boolean; ngOnChanges(changes: SimpleChanges) { console.log('changes: ', changes); // 这将消除它检测到的所有更改。 console.log('changes.yourData: ', changes.yourData); // 这将消除 yourData old 和 yourData new。 ``` changes.yourData 会在控制台中这样输出。 ``` changes.yourData: { currentValue: true, firstChange: false, previousValue: Undefined } ``` previousValue 将在第二次更改时更新
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
相关资源
最近更新 更多