指令不适用于子模块

时间:2017-01-02 21:56:36

标签: angular angular-directive angular-module

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

{{1}}

这是我的Plunker

点击'转到孩子

后,查看控制台中的错误

2 个答案:

答案 0 :(得分:26)

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

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

export class SharedModule {}

现在您只需要将SharedModule添加到AppModuleChildModule的导入。

注意:

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

答案 1 :(得分:-1)

我在项目中遇到了类似的问题。我有shared.module但它仍然抛出错误

  

无法绑定到'pathForUploading',因为它不是'div'的已知属性

我有这个代码

<div class="avatar"
     fileUploader
     [pathForUploading]="'path'"
     (onFileUploaded)="updateAvatar()"></div>

将属性调用更改为

后它就消失了
pathForUploading="path"

希望它会帮助某人