Angular 7拖放 - 动态创建放置区
创始人
2024-10-17 04:30:03
0

以下是一个示例代码,演示了如何在Angular 7中动态创建拖放的放置区。

首先,需要安装@angular/cdk库:

npm install @angular/cdk

然后,在Angular组件中导入相关的模块和服务:

import { Component, ViewChild, ViewContainerRef } from '@angular/core';
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';

接下来,在组件的模板中添加一个容器来放置动态创建的放置区:

然后,在组件类中使用@ViewChild装饰器来获取容器的引用:

@ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;

接下来,可以使用ViewContainerRefcreateComponent方法动态创建放置区。创建放置区的代码可以放在组件的ngOnInit方法中,或在其他需要的地方触发。

ngOnInit() {
  // 创建放置区组件
  const dropZoneComponentRef = this.container.createComponent(factory);

  // 设置放置区的数据和事件处理
  dropZoneComponentRef.instance.data = this.items;
  dropZoneComponentRef.instance.onDrop.subscribe((event: CdkDragDrop) => {
    moveItemInArray(this.items, event.previousIndex, event.currentIndex);
  });
}

在上述代码中,factory是一个ComponentFactory对象,可以通过ComponentFactoryResolver来获取,例如:

constructor(private resolver: ComponentFactoryResolver) {}

ngOnInit() {
  // 获取放置区组件的工厂
  const factory = this.resolver.resolveComponentFactory(DropZoneComponent);
  // ...
}

最后,需要在模板中显示放置区的内容。可以创建一个新的组件DropZoneComponent来定义放置区的模板和逻辑。以下是一个简单的示例:

@Component({
  selector: 'app-drop-zone',
  template: `
    
{{item}}
` }) export class DropZoneComponent { @Input() data: string[]; @Output() onDrop = new EventEmitter>(); }

在上述代码中,app-drop-zone是放置区的选择器,cdkDropList表示这是一个放置区,cdkDrag表示这是一个可拖放的元素。当放置区的内容被拖放时,会触发cdkDropListDropped事件,该事件会在放置区的父组件中处理。

这样,就可以动态创建并使用拖放的放置区了。

相关内容

热门资讯

九分钟辅助!微信卡五星辅助,确... 九分钟辅助!微信卡五星辅助,确实真的有辅助器(有挂分享)1、微信卡五星辅助免费辅助多个强度级别选择2...
第七分钟辅助!微信小程序可以开... 第七分钟辅助!微信小程序可以开挂吗,一贯真的有辅助技巧(有人有挂)1)微信小程序可以开挂吗辅助插件:...
第九分钟辅助!人海大厅软件辅助... 第九分钟辅助!人海大厅软件辅助,真是存在有辅助器(发现有挂)1、人海大厅软件辅助脚本辅助下载、人海大...
四分钟辅助!链接大厅辅助插件有... 四分钟辅助!链接大厅辅助插件有哪些,都是存在有辅助器(真实有挂)1、不需要AI权限,帮助你快速的进行...
8分钟辅助!老友福建麻将辅助,... 8分钟辅助!老友福建麻将辅助,总是有辅助工具(有挂教学)1.老友福建麻将辅助 选牌创建新账号,点击进...
第1分钟辅助!捉住捣蛋鸡作弊码... 第1分钟辅助!捉住捣蛋鸡作弊码,好像存在有辅助挂(有挂讲解)1)捉住捣蛋鸡作弊码免费钻石:进一步探索...
第十分钟辅助!衢州罗松辅助器多... 第十分钟辅助!衢州罗松辅助器多少钱一个,好像存在有辅助神器(有挂教程)所有人都在同一条线上,像星星一...
第三分钟辅助!衢州都莱辅助器下... 第三分钟辅助!衢州都莱辅助器下载,一直是真的有辅助教程(有挂透视)第三分钟辅助!衢州都莱辅助器下载,...
第五分钟辅助!微信小程序卡五星... 第五分钟辅助!微信小程序卡五星辅助器免费,真是存在有辅助插件(有挂细节)1、进入到微信小程序卡五星辅...
一分钟辅助!微信老友广东辅助器... 一分钟辅助!微信老友广东辅助器,真是真的有辅助攻略(有挂技术)1、微信老友广东辅助器辅助器安装包、微...