在拖放中初始化放置物品上的物品数据

时间:2020-02-04 11:06:29

标签: javascript angular angular-material

在这里我创建所需的stackblitz。打开控制台以查看console.log()

问题是当我DROPdrop zone数组的项目为空时(请参阅控制台),但是当您在valueChange上键入内容或选择内容时,我得到了数据(也请检入安慰)。

在选择某些内容或键入某些内容之前,我需要加载它...我想在drop项目时获取数据。

我使用emit()在模板为reusable-form-component.component的组件和主组件为cdk-drag-drop-connected-sorting-example的组件之间获取数据

我尝试使用[attr.init],但得到undefined

2 个答案:

答案 0 :(得分:1)

如果只想向container.data添加元素,而不要使用transferArray,则放置函数必须像

  drop(event: CdkDragDrop<any>) {
    if (event.previousContainer === event.container) {
      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
    } else {
      this.index= this.index+1;
      event.container.data.splice(event.currentIndex,
                       0,event.previousContainer.data[event.previousIndex])
    }
  }

答案 1 :(得分:1)

您可以使用AfterViewInit来完成此操作,我已经为您修改了代码,并添加了此代码 click here for demo

ngAfterViewInit(){
    debugger
    if (this.getFormControl == "INPUT")
      this.valueChange.emit({
        index: this.index,
        type: "INPUT",
        value: this.val
      });
    else if (this.getFormControl == "SELECT_BOX") {
      this.valueChange.emit({
        index: this.index,
        type: "SELECT_BOX",
        selectedValue: this.val,
        avaliableOptions: [
          "select option 1",
          "select option 2",
          "select option 3"
        ]
      });
    }
  }

您可以Click here查看 AfterViewInit 界面的更多详细信息