2016-03-21 3 views
0

Dies ist ein Fehler! In V1.8 - dieser Fehler ist behoben!Wenn ich neue Klasse in Angular2 erstellen, habe ich diesen Fehler: TypeError: http_2.Headers ist kein Konstruktor

Ich schaffe Ausgabe in Typoskript Repository: https://github.com/Microsoft/TypeScript/issues/7616

Problem:

Ich schaffe einfach Klasse: defs.ts

export class default_config { 
    token:string 
} 

export var HEROES:default_config = { 
    token: 'a' 
}; 

export class HeroService { 
    getHeroes() { 
     return HEROES; 
    } 

    setToken(key) { 
     HEROES.token = key; 
    } 
} 

Und Import app.ts:

//our root app component 
import {Component} from 'angular2/core' 
import {Http, HTTP_PROVIDERS} from 'angular2/http'; 
import {RouteConfig, ROUTER_DIRECTIVES} from "angular2/router"; 
import {Headers} from "angular2/http"; 
import {HeroService} from "./defs"; 

@Component({ 
    selector: 'my-app', 
    providers: [HTTP_PROVIDERS, HeroService], 
    template: ` 
    <div> 
     <h2>Hello1 {{name}}</h2> 
     <br> 
     <router-outlet></router-outlet> 
    </div> 
    ` 
    directives: [ROUTER_DIRECTIVES] 
}) 

export class App { 
    constructor(private http:Http, serv: HeroService) { 
    this.name = 'Angular2'; 
    var heads = new Headers(); 
    console.log(heads); 
    } 
} 

Aber in c onsole Ich habe einen Fehler: TypeError: http_2.Headers ist kein Konstruktor

Warum? Warum http_2? ? Warum Header ...

Wenn ich diesen Code:

import {Headers} from "angular2/http"; 
import {HeroService} from "./defs"; 

auf diese ersetzen:

import {HeroService} from "./defs"; 
import {Headers} from "angular2/http"; 

arbeiten alle gut! Aber ich kann nicht verstehen, warum ich diesen Fehler habe?

Live-Demo: http://plnkr.co/edit/nfqjRyktqnscwUc6stbY?p=preview

Antwort

3

Es scheint, dass Sie verwenden sollten:

import {Headers} from 'angular2/http'; 

statt

import {Headers} from "angular2/http"; 

Sehen Sie diese plunkr: http://plnkr.co/edit/Eda5ypYUcn1N5XNM0FEM?p=preview.

+0

Hmmm, wirklich, aber warum anders 'und "in angular2? Mit" funktioniert auch, aber funktioniert sehr seltsam – MixerOID

+0

Arbeiten mit verschiedenen Anführungszeichen ist eine spezielle Funktion oder ein Fehler? – MixerOID

+0

Normalerweise sind einfache und doppelte Anführungszeichen in TypeScript/JavaScript ähnlich. Ich frage mich, ob es nicht ist, weil Sie sowohl "angular2/http" als auch "angular2/http" in zwei verschiedene Importe verwenden ... –