2

在网络上的许多示例中,我在 @Component 元数据中看到带有指令数组的代码,即:

@Component({
  selector: 'sprint-tasks',
  inputs: ['sprintTask'],
  templateUrl: './views/sprint-tasks.html',
  directives: [Dragula],
  providers: [SprintTaskService],
  viewProviders: [DragulaService]
})

来自:如何为 Angular2 安装组件包装器(尤其是 Dragula)

在 Angular2 的 1.0 版本中,该数组已从元数据中删除:( https://angular.io/docs/ts/latest/api/core/index/Component-decorator.html )

当尝试使用第 3 方指令时(dragula在这种情况下),我收​​到以下错误,我认为该错误以前由directives数组处理:

无法绑定到“dragula”,因为它不是“div”的已知属性

那么,我应该在哪里注入Dragula/ DragulaDirective(当前版本实际上似乎没有 export Dragula)以便解析器可以找到这个自定义指令?我已按照 Github 自述文件( https://github.com/valor-software/ng2-dragula#setupDragulaModule的指示导入应用程序模块,并且是应用程序组件的视图提供者。DragulaService

4

2 回答 2

2

将 dragula 模块导入 app 模块时,这使得指令仅可用于 app 模块中声明的组件。如果要使用指令的组件在不同的模块中声明,则该模块还需要导入 dragula 模块

@NgModule({
  imports: [ DragularModule ]
  declarations: [ ComponentUsingDragula ],
  exports: [ ComponentUsingDragula ]
})
class SomeFeatureModule {}
于 2016-11-07T00:51:34.467 回答
1
import { DragulaModule } from 'ng2-dragula/ng2-dragula';

@NgModule({
  imports: [
    BrowserModule,
    DragulaModule
  ],
  declarations: [
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

之后它将开始工作,无需将其添加到组件中。

于 2016-11-06T06:21:21.020 回答