title: Angular 7 injected service being unset
body: <p>I'm doing a simple injection of a service into my component via the constructor.  In both <code>constructor</code> and <code>ngOnInit</code> I print out the value and I see it's an object, as expected.  In the <code>ngOnInit</code> I'm doing a <code>valueChanges</code> subscription like so:</p>
  
  <pre class="lang-js prettyprint-override"><code>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);
  }
  </code></pre>
  
  <p>When the <code>updateHazardClassificationSingleton</code> method runs manually the injected service is there with a value.  When it runs via the subscription, the injected service is <code>undefined</code>.  There's nothing in my code that sets the injected object's value directly.  How could it be going undefined?</p>
  
  <p>Detail service is provided in root.</p>
  
  <pre class="lang-js prettyprint-override"><code>@Injectable({
      providedIn: 'root'
  })
  export class DetailService {
  </code></pre>