首页 > 解决方案 > Angular - 仅在 Inputs() 初始化后运行 ngAfterViewInit() 代码

问题描述

我在组件的 ngAfterViewInit() 中有一些代码:

  @Input 
  public stringArray: string[];
  public newArray: string[];

  ngAfterViewInit() {
    this.newArray = this.stringArray.filter(x => x.includes('a'));
  }

我将代码放入 ngAfterViewInit() 以等待 @Input 属性初始化。

但是,当执行到它时,ngAfterViewInit() 中的代码看起来是“未定义的”。

如何在运行filter()操作之前初始化所有 @Input 属性?

编辑: @Input 属性稍后确实有数据。它只是在 ngAfterViewInit() 之后发生。如何确保我的代码仅在所有 @Input() 属性初始化后才运行?

标签: angulartypescript

解决方案


in parent component use

<div *ngIf='stringArray.length >0'>
<child-component [stringArray]='stringArray' ></child-component>
</div>

i.e your child component is initializes only if there is data in your input properties


推荐阅读