You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

golden-layout 2.6.0中newDragSource()方法失效问题求助

Golden Layout 2.6.0下拉菜单拖拽源失效问题

我们正在将大型Angular 16生产应用从Golden Layout 1.5.9版本迁移至2.6.0版本,过程中遇到了下拉菜单拖拽功能失效的问题。

原有功能(1.5.9版本)

应用内存在一个下拉菜单,包含所有可添加到页面的widget名称。初始化阶段,我们通过GoldenLayout对象的newDragSource方法,将菜单中的所有HTML元素设置为拖拽源:

  • 菜单项可拖拽到页面,作为Golden Layout组件添加,具备所有预期功能
  • 点击菜单项也能正常将组件添加到页面

2.6.0版本的问题

拖拽功能完全失效:菜单项无法触发拖拽行为,但点击菜单项仍可正常添加组件,且组件自身功能正常。

拖拽源创建代码

public createNewWidgetDragSource(element: HTMLElement, widgetModel: Widget): void {
  const gl = this.getGoldenLayoutInstance();
  const config = () => {
    const item: DragSource.ComponentItemConfig = {
      state: null,
      title: widgetModel.name,
      type: 'widget-golden-instance',
    };
    return item;
  };

  gl.newDragSource(element, config);
}

相关说明

  • 上述代码与golden-layout-ng-app参考应用中的代码几乎完全一致,该参考应用使用2.5.0版本时拖拽功能正常
  • 组件类型widget-golden-instance是一个通用Golden Layout容器组件,作为多个自定义widget的宿主

排查情况

  • 检查gl对象,其内部的_dragSources数组已正确填充菜单中的LI元素
  • 编辑器及浏览器中无报错(仅存在DragSource命名空间下ComponentItemConfig的弃用警告,移除该类型后行为无变化)
  • 补充测试:
    • 若在页面中硬编码一个元素,用相同的createNewWidgetDragSource函数设置为拖拽源,功能正常
    • 尝试在菜单打开、列表项可见后再初始化拖拽源,问题依旧
    • 确认调用createNewWidgetDragSource时确实传入了菜单的列表项元素(不传会触发Golden Layout源码的错误提示)
    • 将参考应用升级至2.6.0版本后,拖拽功能仍正常

所有配置、元素、时机看似都无问题,也无错误提示,但拖拽功能就是无法运行。我是否遗漏了什么?这是一个bug吗?

内容的提问来源于stack exchange,提问作者danwellman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:06:13