Javascript AngularJS 2:如何拥有';属性';指令是否与其主机组件通信?
我正在尝试在Angular 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({
<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
});