Если вы хотите захватить щелчок снаружи, вы должны использовать blur
, однако, если вы используете его на div
, это никогда не работает, так как содержимое div не редактируется.
Но есть обходной путь.Допустим, это ваша директива:
import { Directive } from '@angular/core';
@Directive({
selector: '[classHandler]',
host: {
'(click)':'_setInputFocus(true)',
'(blur)':'_setInputFocus(false)',
'[class.md-input-focus]':'inputFocusClass'
}
})
export class ClassHandler {
inputFocusClass: boolean = false;
_setInputFocus(isFocus: boolean) {
this.inputFocusClass = isFocus;
}
}
А теперь вы используете это в div или в вашем пункте меню:
<div classHandler>This is a placeholder</div>
Это не будет работать, но если вы добавите tabindex="1"
, тогда это будет работать:
<div tabindex="1" classHandler>This is a placeholder</div>
Я считаю, что это решит вашу проблему.Вы можете иметь рабочий стек стека здесь .