如何在ngOnInit中设置每个输入值后才能触发ngOnChanges。 我的代码 - >
`ngOnInit() {
this.multiSelectorData.forEach(item=>{
this.allItems.push(item.data);
});
}
ngOnChanges(changes: SimpleChanges) {
if(changes['dataReady'] && changes['dataReady'].currentValue) {
console.log(this.allItems);
}`
我不会在ngonit中使用ngonit初始化数组,因为在ngonit之前调用了ngonchanges,如何在检查ngonchanges之前检查是否所有都被初始化了?
答案 0 :(得分:2)
我发现一种方法是基于输入值都具有先前值属性的事实。如果先前未设置输入,则该值将为CD_INIT_VALUE
(作为字符串)。因此,您可以规定ngOnChanges
中的代码块只有在前一个值不是CD_INIT_VALUE
时才能运行。以下是您测试所有输入值的示例:
ngOnChanges(changes: SimpleChanges) {
let initialized: boolean = true;
for (let prop in changes) {
if (changes[prop].previousValue.toString() === 'CD_INIT_VALUE') {
initialized = false;
//we can break here since if any item is not initialized
//we will say the inputs are NOT initialized
break;
}
}
if (initialized) {
//code you want to execute
}
}
可能有更优雅的解决方案,但我发现这有效。 这可能为时已晚,无法帮助你,但可能会帮助别人,因为当我用Google搜索时,我发现了这个问题。解决方案是我从调试中发现的。