所以我继续执行了一个自定义指令:
@Directive({ selector: 'input[applostfocus]' })
export class LostFocus {
@Output()
applostfocus = new EventEmitter<any>();
@HostListener('focusout', ['$event.target' ])
focusout(input) {
this.applostfocus.emit(input);
}
}
它监听onfocusout
DOM Event,并发出一个事件。
如果它包含在模块中,则可以这样使用:
<input type="number" (applostfocus)="numberLostfocus($event)"></input>
public numberLostfocus($event) {
console.log("applostfocus");
}
但是我的问题是:真的可以吗,Angular 7中不存在像这样的@Directive
吗?
我已经在网上搜索了,只有AngularJS解决方案。另外,我一直在查看official docs。我要问的原因是,使用这种高级框架感觉有点过分设计和不自然。
例如,您无需做出自定义指令即可监听click事件:
<button type="button" (click)="somemethod()"></button>
我写了这个问题,以确保我做得对,并且我没有重新发明轮子。我希望得到像这样的答案:
它实际上已记录在here中。
答案 0 :(得分:0)
您可以将(blur)="numberLostfocus($event)"
用于相同的目的。它是内置的。