DragulaModel无法使用动态数据

时间:2018-05-16 19:17:42

标签: angular issue-tracking ng2-dragula

我正在使用ng2-dragula和mi组件var在通过AJAX获取我的数据后拖放时没有更新。

这是我的HTML代码:

    <div class='wrapper'>
  <div class='container' [dragula]='"another-bag"' [dragulaModel]='many'>
    <div *ngFor='let text of many' [innerHtml]='text'></div>
  </div>
  <div class='container' [dragula]='"another-bag"' [dragulaModel]='many2'>
    <div *ngFor='let text of many2' [innerHtml]='text'></div>
  </div>
</div>

这是我的组件。:

public many: Array<string> = ['The', 'possibilities', 'are', 'endless!'];
  public many2: Array<string> = ['Explore', 'them'];

  constructor(private dragulaService: DragulaService) {
    dragulaService.dropModel.subscribe((value) => {
      this.onDropModel(value.slice(1));
    });
    dragulaService.removeModel.subscribe((value) => {
      this.onRemoveModel(value.slice(1));
    });
  }

  private onDropModel(args) {
    let [el, target, source] = args;
    // do something else
  }

  private onRemoveModel(args) {
    let [el, source] = args;
    // do something else
  }

在此示例中,DragulaModel正在运行,因为数据是静态数组。 但是当我使用ajax填充此数组时,dragulaModel无法正常工作。 例如,我正在使用一个方法来执行ajax,然后在我的many或many2 var中订阅数据。

非常感谢!

1 个答案:

答案 0 :(得分:0)

问题是[dragulaModel]的初始化绑定到many的值,而其值仍然是ajax值之前的undefined。您可以将*ngIf="many"添加到包装中,以确保many在dragula初始化之前具有一个值。