0

我正在努力做到这一点,以便我可以在组件之间很好地拖放,但是让 Dragula 设置推荐的方式意味着每个组件都有自己的 Dragula 副本。所以我不能在组件之间拖放。

我尝试使用 UpgradeAdaptor 使 Dragula 成为全球供应商,但这可能不是正确的方法。我对 Angular 很陌生

这是我希望重用的组件:

import {Component, Input, Inject}   from "@angular/core";
import {Dragula, DragulaService}   from "ng2-dragula/ng2-dragula";

@Component({
  selector: "drag-container",
  template: require("../templates/draggable/drag-container"),
  directives: [Dragula],
  viewProviders: [],
  providers: []
})

export class DragContainer<T> {
  @Input() items: Array<T>;
  @Input() edit: boolean;

  constructor(private dragulaService: DragulaService) { }
}

在我试图让 Dragula 全球化的地方:

import {UpgradeAdapter}                             from "@angular/upgrade";
import {DragulaService}                             from "ng2-dragula/ng2-dragula";

export const adapter = new UpgradeAdapter();

window["foo"].coursesAdapter = adapter;

// Angular 2 services
adapter.addProvider(DragulaService); 

// Angular 1 services we want to use in Angular 2 components
adapter.upgradeNg1Provider("$routeParams");
adapter.upgradeNg1Provider("translate");
adapter.upgradeNg1Provider("showError");
adapter.upgradeNg1Provider("$location");

现在,我仍然可以在组件内拖动和重新排序,但我不能在组件之间移动它。他们有相同的包名。

4

1 回答 1

0

保留在应用程序组件中:

directives: [Dragula],
encapsulation: ViewEncapsulation.None,
viewProviders: [DragulaService]

在子组件中,只需:

    directives: [Dragula]
于 2016-08-05T08:10:57.893 回答