Javascript AngularJS 2:如何拥有';属性';指令是否与其主机组件通信?

Javascript AngularJS 2:如何拥有';属性';指令是否与其主机组件通信?,javascript,angular,angular-directive,Javascript,Angular,Angular Directive,我正在尝试在Angular 2中编写一个实用程序指令,它应该与其宿主组件协作: <my-component my-directive></my-component> 但是组件本身仍然必须指定当数据被丢弃到组件上时要做什么。这就是我遇到麻烦的地方。如何获取组件对象?还是有更好的办法 哦,我非常感谢ES6解决方案(不仅仅是Typescript)。您可以使用依赖项注入来获取主机组件的实例 export const ResourceDropArea=ng.Directive({

我正在尝试在Angular 2中编写一个实用程序指令,它应该与其宿主组件协作:

<my-component my-directive></my-component>
但是组件本身仍然必须指定当数据被丢弃到组件上时要做什么。这就是我遇到麻烦的地方。如何获取组件对象?还是有更好的办法


哦,我非常感谢ES6解决方案(不仅仅是Typescript)。

您可以使用依赖项注入来获取主机组件的实例

export const ResourceDropArea=ng.Directive({/*…*/}).Class({
构造函数(myComponent){
this.myComponent=myComponent;
},  
下降($事件){
this.myComponent.callSomeMethod();
}
});
ResourceDropArea.parameters=[MyComponent];

您可以使用依赖项注入来获取主机组件的实例

export const ResourceDropArea=ng.Directive({/*…*/}).Class({
构造函数(myComponent){
this.myComponent=myComponent;
},  
下降($事件){
this.myComponent.callSomeMethod();
}
});
ResourceDropArea.parameters=[MyComponent];

很有趣。但这种模块化的要点是,它可以用于任何组件。因此,它应该在指令与之一致的任何组件上调用该方法。
ResourceDropArea
是否需要了解
MyComponent
?也许我可以为
MyComponent
指定一些要扩展的超类。但这种模块化的要点是,它可以用于任何组件。因此,它应该在指令与之一致的任何组件上调用该方法。
ResourceDropArea
是否需要了解
MyComponent
?也许我可以为
MyComponent
指定一些要扩展的超类?
export const ResourceDropArea = ng.Directive({
    selector: '[resource-drop-area]',
    inputs:   ['data: resourceDropArea'],
    host: {
        '(dragenter)': ' dragenter($event) ',
        '(dragleave)': ' dragleave($event) ',
        '(dragover)':  ' dragover ($event) ',
        '(drop)':      ' drop     ($event) '
    }
}).Class({
    constructor() {}
    // event handling code
});