我是Angular 2的新手。AngularJS中对应的事件是什么?例如:ng-click
变成了什么?
ng-init
和其他所有事件呢?在VS .NET中没有智能提示,所以很难猜测。
请帮帮我!
谢谢
默认处理的事件应该从原始HTML DOM组件的事件中映射:
http://www.w3schools.com/jsref/dom_obj_event.asp
只需删除 on
前缀。
onclick
---> (click)
onkeypress
---> (keypress)
等等...
您也可以创建自定义事件。
但是,ngInit
不是HTML事件,它属于Angular的组件生命周期的一部分,在Angular 2中使用“钩子”来处理它们,这基本上是您组件内特定方法名称,每当组件进入特定周期时,将调用该方法。例如:
等等...
以下是Angular中的事件列表,请如有需要查看文档获取更多信息。
(focus)="myMethod()"
(blur)="myMethod()"
(submit)="myMethod()"
(scroll)="myMethod()"
(cut)="myMethod()"
(copy)="myMethod()"
(paste)="myMethod()"
(keydown)="myMethod()"
(keypress)="myMethod()"
(keyup)="myMethod()"
(mouseenter)="myMethod()"
(mousedown)="myMethod()"
(mouseup)="myMethod()"
(click)="myMethod()"
(dblclick)="myMethod()"
(drag)="myMethod()"
(dragover)="myMethod()"
(drop)="myMethod()"
这是Angular2的一个重要优势之一。不再需要定制ng-xxx
指令来处理每个事件。
随着自定义元素和其他各种库产生的所有自定义事件,这种方式已经行不通了。
在Angular2中,(eventName)="expression"
绑定语法允许订阅任何已知和未知事件。
$event
变量仍然可用,如(eventName)="myEventHandler($event)"
还可以参见https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding
eventName
。对于DOM事件,您可以从mdn(例如'click' https://developer.mozilla.org/en-US/docs/Web/Events/click)获取信息;如果它来自Angular指令或组件,则可以从其文档中获取信息。 - Günter Zöchbauer您可以使用以下语法来处理事件(例如像Angular1中的ng-click
):
<button (click)="callSomeMethodOfTheComponent()">Click</button>
EventEmitter
类定义的自定义事件。click
事件和自定义事件(my-event
)。@Component({
selector: 'my-selector',
template: `
<div>
<button (click)="callSomeMethodOfTheComponent()">Click</button>
<sub-component (my-event)="callSomeMethodOfTheComponent()"></sub-component>
</div>
`,
directives: [SubComponent]
})
export class MyComponent {
callSomeMethodOfTheComponent() {
console.log('callSomeMethodOfTheComponent called');
}
}
@Component({
selector: 'sub-component',
template: `
<div>
<button (click)="myEvent.emit()">Click (from sub component)</button>
</div>
`
})
export class SubComponent {
@Output()
myEvent: EventEmitter;
constructor() {
this.myEvent = new EventEmitter();
}
}
ngOnInit
和ngOnDestroy
。 - Socrates