【问题标题】:How to get 'ready' value from async input in Angular如何从 Angular 中的异步输入中获取“就绪”值
【发布时间】:2021-10-14 16:22:40
【问题描述】:

在我的父组件中,我将异步值作为输入传递

<app-mycomponent [numberVal]="(numbers$ | async).total" [max]="max"></app-mycomponent>

在我的子组件中,我需要使用这个“numberVal”值来进行一些计算,但是当我在控制台上登录时,ngOnInit() 值还没有准备好,所以它是空的。

  @Input() numberVal: number; // total products

   ngOnInit(): void {
console.log(this.numberVal) 
  }

我尝试使用 ngOnChanges,但它也不起作用。

【问题讨论】:

标签: angular


【解决方案1】:

由于我们要处理async操作,所以在创建组件时该值为null是有意义的。

observer完成后获取值,需要这样实现ngOnChanges

ngOnChanges(changes: SimpleChanges) {
    if (changes['numberVal']) {
      this.numberVal = changes['numberVal'].currentValue;
      console.log(this.numberVal);
    }
}

我创建了一个简单的stackblitz 项目来演示这一点。

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 2012-06-18
    • 2018-03-22
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多