在我知道更好之前,我曾经这样定义我的指令:
...
inputs: [
'onOutside'
]
...
export class ClickOutsideDirective {
@Output() onOutside: EventEmitter<any> = new EventEmitter();
}
但后来我阅读了样式指南,它说你不应该在输出前加上前缀,on
因为 Angular 2 支持on-
模板中的语法。
所以我试图将其更改为:
@Input() outsideClick: any;
@Output() outsideClick: EventEmitter<any> = new EventEmitter();
但是,如果不允许使用前缀,我发现很难将@Input
名称与名称分开。Output
on
在您可以同时命名@Input
相同@Output
的事物之前,但如果在导出的类中同时声明两者,那么这将不再有效,因为将引发错误。
如果我将@Input
tooutside
和@Output
to命名为outsideClick
,这实际上没有意义,因为它们都是同一件事。outside
是我在调用时要执行的函数outsideClick
。
另外,如果不再命名相同的东西,或者我错过了什么,outsideClick
就不知道要执行什么?outside
我应该如何在此处命名@Input
and@Output
变量,以便它仍然有效并且与第一个示例中一样有意义?
编辑:
使用示例:
<div clickOutside [exceptions]="['.toggler']" (outside)="doSomethingOnOutsideClick()"></div>