【问题标题】:Angular Lifecyclehook ngOnChangesAngular 生命周期钩子 ngOnChanges
【发布时间】:2018-08-30 09:35:58
【问题描述】:

我想在每次更改角度视图后更新一个变量。

如何在不使用@input装饰器的情况下实现角度?

【问题讨论】:

  • 你尝试过 ngOnChanges 事件吗?
  • 你试过什么?可以发一些代码吗?
  • 我试过但它不会更新。但我没有使用@input装饰器。
  • 为什么不使用 ngModelChangengModel 绑定来处理您的任何输入。

标签: angular lifecycle-hook


【解决方案1】:

如果您的变量在您的组件中被称为title,那么您可以这样做:

  this.title.valueChanges
      .debounceTime(500)
      .distinctUntilChanged()
      .subscribe (newValue => {
        // do something based on the newvalue 
    });

但是,您现在有一个订阅者,该订阅者会在每次标题更改时触发。所以你真的应该在某个时候销毁它,否则你会出现内存泄漏/堆栈溢出,例如:

this.title.valueChanges
      .debounceTime(500)
      .distinctUntilChanged()
      .takeUntil(this.destroyValueChanges$)
      .subscribe (newValue => {
        // do something based on the newvalue 
    });

Delcare destroyValueChanges$ 作为组件的Subject 属性并在ngOnDestroy 中调用destroyValueChanges$.next();

注意

由于您没有发布任何代码,我不得不猜测您在问什么。我假设标题是您模板上的<input>,用户正在其中输入,因此这就是值的变化方式。如果您正在谈论的变量在您的组件“外部”被更改,那么它需要有一个 @Input 装饰器,并且您需要使用 ngOnChanges 生命周期挂钩。

【讨论】:

    猜你喜欢
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2017-03-29
    • 2017-09-27
    • 2018-01-11
    • 2019-06-26
    相关资源
    最近更新 更多