У меня есть простой класс компонентов следующим образом:
import { Component } from '@angular/core';
import { ControlService } from '../services/control-service';
@Component({
templateUrl: './control-bar.component.html',
styleUrls: ['./control-bar.component.less']
})
export class ControlBarComponent {
get context(): any { return this.controls.context; }
constructor(private controls: ControlService) { }
is(contextName) {
return this.context.constructor.name == contextName;
}
}
Проблема возникает, когда я пытаюсь написать модульный тест для данного кода. Я получаю следующую ошибку:
TypeError: Невозможно прочитать свойство 'constructor' из неопределенного
в ControlBarComponent ../ SRC / приложение / курсы / контроль
- bar.component.ts.ControlBarComponent.is (http://localhost:9876/
_karma_webpack_ / WebPack: /src/app/courses/control-bar.component.ts: 12: 33)
в Object.eval [как updateDirectives]
(Нг: ///DynamicTestModule/ControlBarComponent.ngfactory.js: 111: 25)
После игры с тодом и попытки найти ответ я пробую следующий код, который больше не выдает ошибку.
// Same except for the following line
context = () => this.controls.context;
// replaces
get context(): any { return this.controls.context; }
Так есть ли недостатки этого решения? И если да, когда я должен использовать эти две конструкции кода?