Javascript 输入和输出,如何使用它们来遵循Angular 2'的命名约定;s风格指南?

Javascript 输入和输出,如何使用它们来遵循Angular 2'的命名约定;s风格指南?,javascript,angular,typescript,angular2-styleguide,Javascript,Angular,Typescript,Angular2 Styleguide,在我了解更多之前,我曾经将我的指令定义为: ... inputs: [ 'onOutside' ] ... export class ClickOutsideDirective { @Output() onOutside: EventEmitter<any> = new EventEmitter(); } 但是,如果不允许在前缀上使用,我发现很难将@输入名称与输出名称分开 在将@Input和@Output命名为同一名称之前,如果在导出的类中同时声明这两个名称,则这将不再

在我了解更多之前,我曾经将我的指令定义为:

...
inputs: [
  'onOutside'
]
... 

export class ClickOutsideDirective {
  @Output() onOutside: EventEmitter<any> = new EventEmitter();
}
但是,如果不允许在前缀上使用
,我发现很难将
@输入
名称与
输出
名称分开

在将
@Input
@Output
命名为同一名称之前,如果在导出的类中同时声明这两个名称,则这将不再有效,因为将引发错误

如果我将
@输入
命名为
外部
,将
@输出
命名为
外部点击
,那就没什么意义了,因为它们都是一样的东西
outside
是调用
outside单击时要执行的函数

另外,
outsideClick
将不知道如果
outside
不再是同一个名称,或者我遗漏了什么,该执行什么

我应该如何命名这里的
@Input
@Output
变量,以便它仍然可以工作,并且与第一个示例中的变量一样有意义

编辑:

用法示例:

<div clickOutside [exceptions]="['.toggler']" (outside)="doSomethingOnOutsideClick()"></div> 

绝对不要在
上使用
。在JavaScript中,事件也不会以
上的
开头。只有事件处理程序才可以。JS中没有
onClick
事件。事件名称为
click
,如果将函数分配给
onClick
,则在收到
click
事件时将调用此函数

如果输入和输出属于同一类,请命名它们

@Input() name:any; 
@Output() nameChange: EventEmitter<any> = new EventEmitter();;
如果使用
@Input()
@Output()
(首选方式),则不需要
输入:[]
输出:[]
。这是做同一件事的两种方法,如果你同时使用这两种方法,其中一种是多余的

要匹配浏览器命名方案,您可以做的是

(nameChange)="onNameChange($event)"
在接收到
nameChange
事件时调用事件处理程序
onNameChange

当事件不是输入/输出对的一部分时,您可以或应该省略
更改

(loggedIn)="onLoggedIn($event)

但是如果
outsideClick
是一个应该调用的函数,那么这就没有意义了,它不会改变..对不起,我不理解你的评论。如果Outside Click
是一个函数,您对
的意思是什么。你能给你的问题添加一个代码示例吗?我更新了我的答案(在看到你的编辑之前)。你到底认为什么是没有意义的?
(外部)
事件的语义是什么?可能是我搞糊涂了。。如果
outside
是一个函数,那么我会通过
outsideChange.emit()
发出它,对吗?所以从技术上讲,我可以只做
@Output('outsideChange')outsideClick…
?我不明白你所说的“如果
outside
是一个函数”是什么意思。您的问题不包含具有该名称的函数。你能补充一下这样的代码是什么样子吗?
(nameChange)="onNameChange($event)"
(loggedIn)="onLoggedIn($event)