@Component元数据指令数组的正确替换是什么?

时间:2016-11-06 05:47:26

标签: angular ng2-dragula

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

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

来自:How to install a component wrapper for Angular2 (Dragula in particular)

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

当尝试使用第三方指令(在这种情况下为dragula)时,我得到以下错误,我假设之前由directives数组处理:

  

无法绑定' dragula'因为它不是< div;'

的已知属性

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

2 个答案:

答案 0 :(得分:2)

将dragula模块导入app模块时,该指令仅对app模块中声明的组件可用。如果要在其他模块中声明要使用该指令的组件,则该模块还需要导入dragula模块

@NgModule({
  imports: [ DragularModule ]
  declarations: [ ComponentUsingDragula ],
  exports: [ ComponentUsingDragula ]
})
class SomeFeatureModule {}

答案 1 :(得分:1)

import { DragulaModule } from 'ng2-dragula/ng2-dragula';

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

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