это потому, что хук ngOnInit выполняется до построения представления, поэтому селектор документа запрашивает до того, как элемент присутствует, но селекторы jquery на самом деле являются асинхронными c, ожидающими готовности документа.
вот как вы это делаете angular способом:
@ViewChild('inp')
input
// use the after view init hook
ngAfterViewInit() {
fromEvent(this.input.nativeElement, 'input') // angular way
.pipe(
tap(_ => {
console.log("tap input");
})
)
.subscribe(_ => {
console.log("subscribe input");
});
}
в вашем html, добавьте это:
<input type="text" #inp>
или еще лучше angular способ ( без использования fromEvent
) ...
<input type="text" (input)="showMe($event)">
, тогда в компоненте просто укажите это:
showMe(e) {
console.log(e)
}
https://stackblitz.com/edit/angular-ivy-jfoc7d?file=src%2Fapp%2Fapp.component.html