2016-11-06 46 views
2

在网络上许多例子我看到一个带有指令阵列码的元数据@Component即:什么是@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)

在1.0释放Angular2的,这个阵列从元数据删除:(https://angular.io/docs/ts/latest/api/core/index/Component-decorator.html

当试图使用在这种情况下,第三方指令(dragula)我碰到下面的错误,我认为由directives阵列之前处理:

Can't bind to 'dragula' since it isn't a known property of 'div'

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

+0

是您尝试使用它的应用程序组件?将dragula模块导入应用程序模块时,这使得指令仅适用于应用程序模块中声明的组件。如果你想使用指令的组件在不同的模块中声明,那么该模块也需要导入dragula模块 –

+0

@peeskillet就是这样;我只是重构了功能模块,并没有考虑到这一点。如果你发布这个答案,我会接受它 – BradleyDotNET

回答

2

将dragula模块导入到应用程序模块时,这使得指令仅适用于应用程序模块中声明的组件。如果您要使用指令的组件在另一个模块中声明,那么该模块也需要导入dragula模块

@NgModule({ 
    imports: [ DragularModule ] 
    declarations: [ ComponentUsingDragula ], 
    exports: [ ComponentUsingDragula ] 
}) 
class SomeFeatureModule {} 
1
import { DragulaModule } from 'ng2-dragula/ng2-dragula'; 

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

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

+0

谢谢你的回答,你*主要是*正确的;我还需要在我的功能模块中执行此操作。 – BradleyDotNET

+0

我是一个角色的新手,我必须失去一些东西。我在我的浏览器中得到以下错误(是的,我已经在node_modules/dragula&node_modules/ng2-dragula中安装了dragula):'(index):22错误:(SystemJS)XHR错误(404 Not Found)加载http:/ /本地主机:3000/NG2-dragula/NG2-dragula(...)' –

相关问题