В коде выше this потерялся потому, что this.onLabelClick передаётся как аргумент, примерно так это выглядит
onClick(handler) {
handler(); // this === undefined
}
onClick(this.onLabelClick);
Как вообще работает this? Когда используется точка JavaScript по спецификации (
https://tc39.es/ecma262/#sec-reference-specification-type) возвращает не функцию, а reference type — тройку (object, propertyName, isStrict). И когда происходит вызов () от reference type, то у функции есть доступ к объекту — к this.
Однако если вызова не происходит — как в вашем примере, то информация из reference type утрачивается, остаётся просто функция, которая ничего не знает, от какого объекта она была вызвана.
minimal-case этой проблемы:
const method = this.onLabelClick;
method();
— здесь происходит потеря this.