【问题标题】:Is there a built-in Angular lostfocus event?是否有内置的 Angular lostfocus 事件?
【发布时间】:2019-10-20 16:00:44
【问题描述】:

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

@Directive({ selector: 'input[applostfocus]' })
export class LostFocus {
    @Output()
    applostfocus = new EventEmitter<any>();

    @HostListener('focusout', ['$event.target' ])
    focusout(input) {
        this.applostfocus.emit(input);
    }
}

它监听onfocusoutDOM Event,并发出一个事件。

如果包含在模块中,可以这样使用:

<input type="number" (applostfocus)="numberLostfocus($event)"></input>

public numberLostfocus($event) {
    console.log("applostfocus");
}

但是我的问题是:真的可以这样的@Directive 在Angular 7 中不存在吗?

我在网上搜索过,只有 AngularJS 的解决方案。我也一直在看official docs。我之所以问这个问题,是因为使用这样一个高级框架感觉有点过度设计和不自然。

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

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

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

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

编辑:

实际上记录在here

【问题讨论】:

    标签: angular angular-directive custom-directive


    【解决方案1】:

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

    【讨论】:

    • 是的,就是这样..请杀了我^^我想知道我怎么没找到这个。但它的here
    • 它们不太一样,例如"focusout bubbles whole blur does not".
    • @jonrsharpe 所以你是说,我可以做&lt;div (applostfocus)="numberLostfocus($event)"&gt;&lt;input type="number" &gt;&lt;/input&gt;&lt;/div&gt; 并且它仍然会触发它?
    • @LuckyLikey 不,这不是我要说的(这也不是真的,因为您的指令特定于input 元素);我是说blurfocusout 不是同一个事件。您可以不可避免地使用(focusout)="..." 绑定到focusout
    • @jonrsharpe 是的,但是整个气泡是什么意思?是不是类似于WPFs RoutingStrategy.Bubblelink
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2013-04-03
    • 2015-12-14
    相关资源
    最近更新 更多