Итак, я пошел дальше и реализовал пользовательскую директиву:
@Directive({ selector: 'input[applostfocus]' })
export class LostFocus {
@Output()
applostfocus = new EventEmitter<any>();
@HostListener('focusout', ['$event.target' ])
focusout(input) {
this.applostfocus.emit(input);
}
}
Он слушает событие onfocusout
DOM и генерирует событие.
Если он включен в модуль, его можно использовать так:
<input type="number" (applostfocus)="numberLostfocus($event)"></input>
public numberLostfocus($event) {
console.log("applostfocus");
}
Однако мой вопрос таков: Может ли быть так, что @Directive
, подобный этому, не существует в Angular 7?
Я искал в Интернете, и были только решения для AngularJS. Также я смотрю на официальные документы . Причина, по которой я спрашиваю, заключается в том, что это кажется немного чрезмерным и неестественным по отношению к такой продвинутой структуре.
Например, вам не нужно создавать пользовательскую директиву для прослушивания события щелчка:
<button type="button" (click)="somemethod()"></button>
Я написал этот вопрос, чтобы убедиться, что я все делаю правильно, и что я не изобретаю велосипед. Я ожидаю, что ответы как:
- Да, Вы делаете Это правильно, нет такой вещи, как: ...
- Нет, вы пропали без вести ...
Edit:
Это на самом деле задокументировано здесь .