指令在子模块中不起作用

ome*_*per 12 angular-directive angular-module angular

我无法使指令在延迟加载的模块中工作.我已经阅读了文档,我只是将指令添加到主模块的声明数组中.该指令在该模块中按预期工作,但它在延迟加载的模块中不起作用.它甚至可以防止因模板错误而打开延迟加载的模块:

Can't bind to 'myHighlight' since it isn't a known property of 'p'
Run Code Online (Sandbox Code Playgroud)

这是我的Plunker.

点击"转到孩子"后查看控制台中的错误

Ste*_*ota 31

那是因为你的指令被声明AppModule并且它只在那里可用.如果你想在两个模块中使用指令,你可以SharedModule从那里创建然后声明和导出指令,然后导入SharedModuleAppModule和你的ChildModule:

@NgModule({
  declarations: [ HighlightDirective ],
  exports: [ HighlightDirective ]
})

export class SharedModule {}
Run Code Online (Sandbox Code Playgroud)

现在你只需要添加SharedModuleAppModule's ChildModule' 和's import.

注意:

你必须从AppModule声明中删除你的指令,因为它只能被声明一次.

  • @echonax不,唯一让全球可用的方法就是我所描述的,至少在这一刻. (3认同)
  • 但是,不是应该在整个应用程序中全局使用AppModule中声明的声明吗? (2认同)