我们有多个用角度8内置的模板,其中包含滑块,产品列表以及一些带有图像,文本等的块。我需要创建一个拖放页面构建器,用户可以在其中选择模板,添加或删除任何元素以及编辑元素(样式),例如带有图像,标题,价格,按钮等的产品包装盒。我不知道如何进行技术堆叠,最终将模板保存为有角度的。几乎所有组件都显示从API加载的动态数据
任何帮助将不胜感激,我愿意进行任何讨论
找不到一个,如果您需要自己动手,这是从我的经验中学到的一些教训。
定义页面模型的外观
export interface Widget {
name: string;
type: string;
style: CSSProperties;
widgets?: Widget[];
}
export interface Text extends Widget {
textContent: string;
}
export interface Image extends Widget {
url: string;
}
export interface Table extends Widget {
source: string;
}
您总是可以扩展您的界面,但是至少要花足够的时间来了解结构的外观。如果属性为done,则使用其自己的接口添加新组件变得轻而易举。在某些方面,使用HTML作为模型可能更有意义。但是在使用此模型的情况下,“ TextComponent”可以期望向其提供符合“ Text”接口的数据。图片,表格等也一样...
这样,您就可以使用要使用的特定属性标记组件的html。即,对于TextComponent,您只需在HTML中使用
"{{textContent}}
,因为它是此Component接口的属性。拖放
了解是否需要支持嵌套拖放?
一旦定义了模型,就可以在拖动事件中为当前组件传递模型。在“ Drop”上,您可以检查所传递数据的widget.type
。这将使您能够确定要处理的组件类型。
通过使用可观测对象来确保各个组件之间保持隔离
这允许处理诸如以下的场景>
这可能会变得非常复杂,具体取决于您需要的复杂程度。如果这是一个项目,您只需要快速,轻松地完成工作,那么当然可以做。但是,如果您有时间专用于此,我建议您花一些时间了解模型以及组件之间的相互作用。
我希望其中一些有用。祝你好运。