title: Error when accessing static properties when services include each other
body: <p>When running the following code as-is, it get this error: </p>
  
  <p><code>Uncaught TypeError: Cannot read property 'TYPE_CAMPAIGN' of undefined</code></p>
  
  <p><a href="http://plnkr.co/edit/Y5j0f6Nf51kkegjnPVsa?p=preview" rel="nofollow noreferrer">Plunker Example</a></p>
  
  <p>entity.service.ts</p>
  
  <pre><code>import {Injectable} from '@angular/core';
  import {CampaignService} from './campaign/campaign.service';
  import {TagService} from './tag/tag.service';
  
  @Injectable()
  export class EntityService {
    static TYPES = [
      CampaignService.TYPE_CAMPAIGN,
      TagService.TYPE_TAG
    ];
  }
  </code></pre>
  
  <p>campaign.service.ts</p>
  
  <pre><code>import {Injectable} from '@angular/core';
  import {EntityService} from '../entity.service';
  
  @Injectable()
  export class CampaignService {
    static TYPE_CAMPAIGN = 'campaign';
  
    constructor(private entityService: EntityService) {}
  
    public getTypes() {
      return EntityService.TYPES;
    }
  }
  </code></pre>
  
  <p>tag.service.ts</p>
  
  <pre><code>import {Injectable} from '@angular/core';
  import {EntityService} from '../entity.service';
  
  @Injectable()
  export class TagService {
    static TYPE_TAG = 'tag';
  
    constructor(private entityService: EntityService) {}
  }
  </code></pre>
  
  <p>However, when I remove the constructor from <code>campaign.service.ts</code>, the code works without issue. Why does the error occur, and how do I access static properties when the constructor is included?</p>
  
  <p><strong>Update 1:</strong> After testing using Angular's Injector to offset when classes are loaded, I find that I still have an issue accessing static properties of EntityService inside methods of CampaignService. I've also found that adding <code>private entityService: EntityService</code> in <code>campaign.service.ts</code> causes the issue.</p>
  
  <p><strong>Update 2:</strong> The issue is caused by the order of import statements in the Module that is providing the services (I recently alphabetized my import statements).</p>
  
  <p>app.module.ts</p>
  
  <pre><code>import {CampaignService} from './campaign/campaign.service';
  import {EntityService} from '../entity.service';
  import {TagService} from './tag/tag.service';
  
  @NgModule({
    providers: [
      CampaignService,
      EntityService,
      TagService
    ]
  });
  </code></pre>
  
  <p>When the import statement for <code>entity.service.ts</code> is moved before <code>campaign.service.ts</code>, both CampaignService and TagService are able to work without issue.</p>
  
  <p><strong>Update 3:</strong> It looks like the issue is version specific. Here is the example of the issue happening in the version I am currently using: <a href="http://plnkr.co/edit/Y5j0f6Nf51kkegjnPVsa?p=preview" rel="nofollow noreferrer">Example</a></p>
  
  <p>If you switch the import statements in <code>src/app.component.ts</code> while watching the console, then you will see the issue at hand.</p>