我有一个方法来控制在我的页面上显示/隐藏使用*ngIf
指令的输入。有一个按钮可以切换显示/隐藏,这实际上是从页面添加/删除它。
当我切换时,我收到错误Attempt to use a destroyed view: detectChanges
。 Show -> Hide (Fine) -> Show -> Hide (Error)
。
这是被调用的方法。我切换此输入的按钮调用 cancelEditMode()。
closeEditMode() {
for (var i = 0; i < this._mapsService.rulesInEditMode.length; i++) {
if (this._mapsService.rulesInEditMode[i].parentID == this.parentRule.controls['RuleParentID'].value && this._mapsService.rulesInEditMode[i].attributeID == this.ruleAttributeData.AttributeID) {
this._mapsService.rulesInEditMode.splice(i, 1);
break;
}
}
}
cancelEditMode() {
this.
ruleAttributeForm.
valueChanges.
subscribe(form => {
this.closeEditMode();
});
// Reset to initial input before the user made 2-way binding changes
this.ruleAttributeForm.controls['AttributeValue'].setValue(this.initialValueInput, { emitEvent: true })
}
这似乎是表单订阅和值设置的问题。如果我在cancelEditMode()
中拨打的唯一内容是closeEditMode()
,无论我切换多少次,都不会收到错误。
我对此方法的目标是设置表单控件的值,一旦设置完毕,我们就会关闭输入(切换*ngIf
到false
)。在某个地方,它并不是这样的。
思想?