在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
是应用组件的视图提供者。
答案 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 { }
之后它将开始工作,无需在组件中添加它。