diff --git a/packages/designer/src/designer/setting/setting-field.ts b/packages/designer/src/designer/setting/setting-field.ts index 5b73cb93a..2f922a5a0 100644 --- a/packages/designer/src/designer/setting/setting-field.ts +++ b/packages/designer/src/designer/setting/setting-field.ts @@ -58,10 +58,13 @@ export class SettingField extends SettingPropEntry implements SettingEntry { this._expanded = value; } - constructor(readonly parent: SettingEntry, config: FieldConfig, settingFieldCollector?: (name: string | number, field: SettingField) => void) { + parent: SettingEntry; + + constructor(parent: SettingEntry, config: FieldConfig, settingFieldCollector?: (name: string | number, field: SettingField) => void) { super(parent, config.name, config.type); const { title, items, setter, extraProps, ...rest } = config; + this.parent = parent; this._config = config; this._title = title; this._setter = setter; @@ -115,6 +118,7 @@ export class SettingField extends SettingPropEntry implements SettingEntry { purge() { this.disposeItems(); + this.parent = null as any; } // ======= compatibles for vision ====== diff --git a/packages/editor-skeleton/src/components/settings/main.ts b/packages/editor-skeleton/src/components/settings/main.ts index 40e62059e..5c6e3ffa3 100644 --- a/packages/editor-skeleton/src/components/settings/main.ts +++ b/packages/editor-skeleton/src/components/settings/main.ts @@ -69,6 +69,7 @@ export class SettingsMain { this.designer = nodes[0].document.designer; } + this._settings?.purge(); this._settings = this.designer.createSettingEntry(nodes); }