0

所以我继续实施了一个自定义指令:

@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 的解决方案。另外我一直在看官方文档。我之所以这么问,是因为使用这样一个高级框架感觉有点过度设计和不自然。

例如,您不必制作自定义指令来监听点击事件:

<button type="button" (click)="somemethod()"></button>

我写这个问题是为了确保我做对了,并且我没有重新发明轮子。我希望得到这样的答案:

  • 是的,你做得对,没有这样的事情,因为:......
  • 不,你失踪了……

编辑:

它实际上记录在这里

4

1 回答 1

3

您可以(blur)="numberLostfocus($event)"用于相同的目的。它是内置的。

于 2019-06-05T06:52:13.777 回答