Угловой 7 введенный сервис, будучи не установленным - PullRequest
0 голосов
/ 01 июля 2019

Я делаю простую инъекцию службы в мой компонент через конструктор.И в constructor, и в ngOnInit я распечатываю значение и вижу, что это объект, как и ожидалось.В ngOnInit я делаю подписку valueChanges следующим образом:

constructor(private readonly detailService: DetailService) {
}

ngOnInit(): void {
  this.updateHazardClassificationSingleton();

  this.thisTabFormGroup.valueChanges.pipe(
    takeUntil(this.unsubscribe$)
  ).subscribe(this.updateHazardClassificationSingleton);
}

private updateHazardClassificationSingleton(): void {
    this.detailService.setHazardClassification(this.hazardClassification);
    this.detailService.setHazardClassificationIsSet(this.hazardClassificationIsSet);
}

Когда метод updateHazardClassificationSingleton запускается вручную, внедренная служба имеет значение.Когда он запускается через подписку, внедренный сервис равен undefined.В моем коде нет ничего, что напрямую устанавливало бы значение введенного объекта.Как это могло быть неопределенным?

Подробная служба предоставляется в корне.

@Injectable({
    providedIn: 'root'
})
export class DetailService {

1 Ответ

0 голосов
/ 01 июля 2019

Я думаю, это потому, что this контекст

вместо;

subscribe(this.updateHazardClassificationSingleton)

try;

subscribe(this.updateHazardClassificationSingleton.bind(this))

...