gpt4 book ai didi

Angular6 - ngIf 不会破坏对象

转载 作者:行者123 更新时间:2023-12-02 17:04:15 26 4
gpt4 key购买 nike

我有一个父组件,它会在单击按钮时更改作为 @Input() 传递的子表单。我使用 ngIf 来呈现子组件,但是当我单击以更改表单时,子组件不会被销毁并重新创建。

父组件.ts

form: FormGroup;
showChildForm: boolean;
num: number;

ngOnInit(){
this.showChildForm = false;
this.num = 1;
this.form = new FormGroup({group:{'name', new FormControl('name'+this.num,[])}})
}

changeForm(){
this.num += 1;
this.showChildForm = true;
this.form = new FormGroup({group:{'name', new FormControl('name'+this.num,[])}})
}

parent.component.html

<button (click)="changeForm()"></button>
<child *ngIf="showChildForm" [form]="form"></child>

子组件.ts

@Input() form: FormGroup;

child.component.html

<form [formGroup]="form">
<input type="text" [formControl]="form.get('name')"/>
</form>

最佳答案

在 changeForm 中,您不会再次将 this.showChildForm 设置为 false。

尝试这样做:

changeForm(){
this.num += 1;
this.showChildForm = false;
setTimeout(() => {
this.showChildForm = true;
this.form = new FormGroup({group:{'name', new FormControl('name'+this.num,[])}})
})
}

将其关闭然后在下一个滴答周期(使用 setTimeout)再次打开将导致组件被销毁并重新创建。

关于Angular6 - ngIf 不会破坏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52506519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com