如何在Angular2 RC5打字稿中调用共享指令的方法?

时间:2016-08-23 09:10:25

标签: angular angular2-directives

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

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

E.g。 在这里,当我不共享指令时,它就像

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

但是当我将这些组件提取到单独的模块中并将此指令移到共享模块时,import ..directives: [...]已经消失,我无法注入private modal: Modal来调用其方法{ {1}}。如果我保留它们,我会收到show错误消息。

1 个答案:

答案 0 :(得分:0)

将其添加到AppModule中的[providers]

providers: [Modal]

然后你需要在应该使用它的组件中导入该服务并且它将起作用,不需要将它添加为指令,例如:

import { Modal } from '../bootstrap';

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

constructor (private modal: Modal)

现在您可以使用该服务:

this.modal.show()

编辑:

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