Angular 有类似 window.addEventListener 的功能吗?

axi*_*uru 8 javascript angular angular5

我有一个像下面这样的 JavaScript 函数。

window.addEventListener('message', function(event) {
                document.getElementById('mytoken').value = JSON.parse(event.data);

                var token = JSON.parse(event.data);      

                alert('Received message ' + token.message);
                var mytoken = document.getElementById('mytoken');
                mytoken.value = token.message;
                }, false);
Run Code Online (Sandbox Code Playgroud)

我想在 Angular 5 中使用这个脚本,当然,我正在尝试为 Angular 5 找到正确的解决方案。谢谢

yur*_*zui 7

在 Angular 中,您可以HostListener在某些组件中使用,例如:

@HostListener('window:message', ['$event'])
onMessage(event) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

有关替代选项,请参阅:


小智 5

使用 HostListener 装饰器

就我个人而言,我更喜欢这样做

    import {HostListener, KeyboardEvent} from '@angular/core';

    @Component({...})
    export class MyComponent {

    @HostListener('document:keyup', ['$event'])
    onKeyUp(ev:KeyboardEvent) {
      // do something meaningful with it
      console.log(`The user just pressed ${ev.key}!`);
     }
    }
Run Code Online (Sandbox Code Playgroud)