0

Im trying to get this function "this.kill()" to work. But when i call it i get this error: "TypeError: this.kill is not a function" and i cant figure out a way to solve it.

html:

<div class="message success" id="alert"></div>

Baseclass:

export class BaseMessage {

  constructor(protected element:HTMLElement, protected message:string) {
    this.init();
  }

  init():void {
    this.setText(this.message);
    this.addListeners();
  }

  kill():void {
    this.removeListeners();
  }

  setText(message:string):void {
    this.element.textContent = message;
  }

  addListeners():void {
    this.element.addEventListener('click',this.onClick);
  }

  removeListeners():void {
    this.element.removeEventListener('click',this.onClick);
  }

  onClick():void {
    this.kill();
    //its this that causes the error
  }
}

Message class

import { BaseMessage } from './basemessage';

export class Message extends BaseMessage {
    constructor(element:HTMLElement, message:string) {
        super(element, message);
    }
}

Main

import { Message } from './components/message';
const mess = document.getElementById('alert');
const message = new Message(mess,'Tack, tack!');
Nitzan Tomer
  • 155,636
  • 47
  • 315
  • 299
user2952238
  • 749
  • 2
  • 11
  • 36

0 Answers0