我是 ngOnchanges 的新手并面临以下问题。
我的父组件正在 ngOnChanges 上设置 recom 值并将相同的值发送到子组件。child 接收与 ngOnChanges 中的输入相同的内容。根据某些条件,例如 totalVal>0,我将 inputField 设置为 true,最初设置为 false。如果 inputField 为真,我会以反应形式显示一些组件。但是当我下面的结构执行 model2Form() 时,它仍然将 inputField 设为 false。我无法发布实际代码,所以只是根据我的项目创建了一个结构,如下所示。
请建议我如何解决这个问题。
// parent component
ngOnchanges(){
this.recom = [{
totalVal: 5000,
monthlydata: true
}]
}
//child component
@Input()
private recom: any;
inputField: boolean = false;
ngOnChanges(){
this.setValue();
this.loadFuture();
}
setValue(){
if(this.recom.totalVal > 0){
this.inputField = true;
}
}
loadFuture(){
}
model2Form(){
//getting input field as false even if i set it as true in setValue()
if(inputField){
this.heroForm.setControl('secretLairs', addressFormArray);
}
}
<!-- parent component>
<parent-comp [recom]="recom"></parent-comp>
<!-- child component -->
<div [FormControlName]="secretLairs"> </div>
Run Code Online (Sandbox Code Playgroud)
问题是您正在尝试监视阵列上的更改。数组和对象不能很好地工作,ngOnChanges因为它们是通过引用而不是值传递的。字符串和整数在这里工作得很好,因为它很容易让 Angular 知道值何时发生变化。由于 Javascript 通过引用传递对象和数组,因此 Angular 只会在引用更改时触发更改检测。
真正解决这个问题的三种方法:
@Inputs(),分别监视字符串或数字之类的值。| 归档时间: |
|
| 查看次数: |
8472 次 |
| 最近记录: |