angular - 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() 属性初始化后才运行?
解决方案
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
推荐阅读
- html - CSS响应式两列,多行为一列
- visual-studio - 如何在 ASP .NET Core 2.0 项目中为不同的发布配置文件使用不同的 web.config 文件
- c# - 如何将文件路径设置为当前目录的根目录
- python - Python Django-不返回有效结果
- c++ - 递归函数的复杂性(大 O 表示法)
- adb - adb Logcat 仅打印实时跟踪
- python - Masonite - 制作新命令抛出模块“urllib”没有属性“urlopen”错误
- git - `git log` 的第一次提交是否是分支的当前提交?
- android - 下拉(微调器)未显示在 android 的设计窗口中
- python - 在金字塔包中将外生变量添加到自动 arima