如何调用共享指令';Angular2 RC5打字脚本中的s方法?

如何调用共享指令';Angular2 RC5打字脚本中的s方法?,angular,angular2-directives,Angular,Angular2 Directives,我的代码中有几个组件应该使用的自定义指令。我在app.module中注册了它,因此可以在我的模板中使用它 但我的问题是,我看不到从组件代码调用此指令的方法的方法,因为它不再导入并在指令:[]中注册它了 例如。 在这里,当我不共享指令时,它的用法如下 import { Modal } from '../bootstrap'; @Component({ templateUrl: '.....html', directives: [Modal]

我的代码中有几个组件应该使用的自定义指令。我在app.module中注册了它,因此可以在我的模板中使用它

但我的问题是,我看不到从组件代码调用此指令的方法的方法,因为它不再导入并在
指令:[]
中注册它了

例如。 在这里,当我不共享指令时,它的用法如下

    import { Modal } from '../bootstrap';
    @Component({
        templateUrl: '.....html',
        directives: [Modal]
    })
    export class MyComponent {
            constructor(private modal: Modal) {
            this.modal.show();
        }
    }

但是,当我将这些组件提取到单独的模块中并将此指令移动到共享模块时,
import..
指令:[……]
就不见了,我无法将
private modal:modal
注入到调用其方法
show
中。如果我保留它们,我会得到
错误:类型模态是2个模块声明的一部分:…
错误消息。

将其添加到AppModule中的
[providers]

providers:[模式]

然后您需要在应该使用该服务的组件中导入该服务,该服务将正常工作,无需将其添加为指令,例如:

从“../bootstrap”导入{Modal}

然后,您可以将其添加到构造函数:

构造函数(私有模式:模式)

现在您可以使用该服务:

this.modal.show()

编辑:


更新了答案以匹配您提供的代码。

将其添加到AppModule中的
[providers]

providers:[模式]

然后您需要在应该使用该服务的组件中导入该服务,该服务将正常工作,无需将其添加为指令,例如:

从“../bootstrap”导入{Modal}

然后,您可以将其添加到构造函数:

构造函数(私有模式:模式)

现在您可以使用该服务:

this.modal.show()

编辑:


更新了答案以匹配您提供的代码。

请发布一些代码来演示您试图完成的任务。我看不出调用共享指令代码并将它们添加到
指令:[]
中有什么关系。请编辑问题并在那里添加代码。您不提供或注入组件,只提供服务(除非您希望引用子项中的父项)。请发布一些代码,演示您试图完成的任务。我看不出调用共享指令代码并将它们添加到
指令:[
中有什么关系。请编辑问题并在那里添加代码。您不提供或注入组件,只提供服务(除非您希望在子指令中引用父指令).我有几个依赖于app.module的模块,所有模块中我都需要此指令。我试图创建一个共享模块来提供这个指令,但我得到了一个错误:类型Modal是2个模块声明的一部分:Error…从主模块中删除Modal,并将其保留在共享模块中,这可能就是问题所在。你应该提供更多的代码。我有几个依赖于app.module的模块,我需要在所有模块中使用这个指令。我试图创建一个共享模块来提供这个指令,但我得到了一个错误:类型Modal是2个模块声明的一部分:Error…从主模块中删除Modal,并将其保留在共享模块中,这可能就是问题所在。您应该提供更多的代码。