2015-06-11 7 views
7

Ich befolge das Tutorial auf der offiziellen Angular2 Webseite.Modul '' angular2/angular2 '' hat kein exportiertes Element 'For'

https://angular.io/docs/js/latest/guide/displaying-data.html

Hier ist meine .ts-Datei:

/// <reference path="typings/angular2/angular2.d.ts" /> 
import {Component, View, bootstrap, For} from 'angular2/angular2'; 

@Component({ 
    selector: 'display' 
}) 
@View({ 
    template: '<p>name: {{myName}}</p>' + 
       '<p>Friends:</p>' + 
       '<ul>'+ 
       '<li *for="#name of names">'+ 
        '{{name}}'+ 
       '<li>'+ 
       '<ul>', 
    directives: [For] 
}) 
class DisplayComponent{ 
    myName: string; 
    names: Array<string>; 

    constructotr(){ 
     this.myName = "Alice"; 
     this.names = ["Winston", "Alex", "Shannon", "Irizu"]; 
    } 
} 

bootstrap(DisplayComponent); 

Hier ist mein html:

<html> 
<head> 
     <script src="https://github.jspm.io/jmcriffey/[email protected]/traceur-runtime.js"></script> 
     <script src="https://jspm.io/[email protected]"></script> 
     <script src="https://code.angularjs.org/2.0.0-alpha.23/angular2.dev.js"></script> 
</head> 
<body> 
    <display></display> 
    <script> 
     System.import('show-properties'); 
    </script> 
</body> 

</html> 

Und ich habe installiert angular2, Rx und es6-Versprechen.

Immer noch besteht der Fehler.

Nachricht TS6042: Kompilierung abgeschlossen. Auf Dateiänderungen achten. Nachricht TS6032: Dateiänderung erkannt. Start inkremental compilation ... show-properties.ts (2,37): Fehler TS2305: Modul '' angular2/angular2 '' hat kein Mitglied 'For'. Nachricht TS6042: Kompilierung abgeschlossen. Auf Dateiänderungen achten.


aktualisieren

Hier ist Code meines aktualisiert .ts:

/// <reference path="typings/angular2/angular2.d.ts" /> 
import { 
ComponentAnnotation as Component, 
    ViewAnnotation as View, bootstrap, NgFor 
} from 'angular2/angular2'; 



@Component({ 
    selector: 'display' 
}) 
@View({ 
    template: '<p>name: {{myName}}</p>' + 
       '<p>Friends:</p>' + 
       '<ul>'+ 
       '<li *ng-for="#name of names">'+ 
        '{{name}}'+ 
       '<li>'+ 
       '<ul>', 
    directives: [NgFor] 
}) 
class DisplayComponent{ 
    myName: string; 
    names: Array<string>; 

    constructotr(){ 
     this.myName = "Alice"; 
     this.names = ["Winston", "Alex", "Shannon", "Irizu"]; 
    } 
} 

bootstrap(DisplayComponent); 

angular2.d.ts noch alpha ist 26.

Jetzt gibt es keinen Fehler Nachricht und ich kann

sehen

Name: Freunde:

Aber es sind keine Werte eingefügt. Und ich habe eine Fehlermeldung bekommen:

Show-properties.ts (7,2): Fehler TS2348: Wert des Typs 'typeof ComponentAnnotation' ist nicht aufrufbar. Meinst du "neu"? show-properties.ts (10,2): Fehler TS2348: Wert des Typs 'typeof ViewAnnotation' ist nicht aufrufbar. Meinst du "neu"? Nachricht TS6042: Kompilierung abgeschlossen. Auf Dateiänderungen achten.

Antwort

13

Ihr Problem ist, dass die Dokumentation nicht synchron ist. Wenn Sie kürzlich die Dokumentation für die Installation befolgt haben, dann hätte es die Typisierung für die neueste Version alpha26 installiert, die viele kaputte Änderungen aufweist. Und die Dokumentation verwendet eine Version von a23 mit dieser Codeversion. Sie können entweder

1) Aktualisieren Sie Ihre Typisierung auf ältere Version, die v23 entspricht, die Sie find it here können. Kopieren Sie den Inhalt und ersetzen Sie ihn in ./typings/angular2/angular2.d.ts.

2) Aktualisieren Sie Ihr eckiges Skript auf alpha 26 und beheben Sie einige Dinge.

  • For ist jetzt NgFor, If ist jetzt NgIf
  • *for jetzt *ng-for ist, *if jetzt *ng-if ist ...
  • injectables (wenn Sie in Ihrer Richtlinie Einstellungen verwenden möchten) ist jetzt appInjector

  • Installationsbeispiele für es6-promise, rx und rx-lite mit demselben Befehl .

    Demo - 23

    Demo - 26

Sie auch den Start von angular-class webpack starter nutzen könnten.

+0

Hallo ich den zweiten Vorschlag gefolgt. Jetzt erhalte ich eine Fehlermeldung. Bitte sehen Sie mein Update. Danke – Franva

+1

Wenn Sie Typescipt verwenden, sollten Sie diese Anmerkung nicht verwenden, wie ich denke. Ich importiere einfach 'Component, View, Bootstrap, NgFor} von' angular2/angular2 '; 'Das war für es6-Code in PLNKR. Installieren Sie auch die oben genannten Typen in der aktualisierten Antwort, wenn Sie danach fragen. Beachten Sie auch die Schreibweise von 'Konstruktor', da es einen Tippfehler in Ihrem Code gibt. Ich hoffe, Sie sollten in der Lage sein, hier herauszufinden. – PSL

+0

Vielen Dank für Ihre Hilfe und Geduld. Das Problem ist endlich gelöst :) – Franva

4

Ja, die umbenannt für ng-for. Gleiches gilt für ng-if. Aktualisieren Sie es einfach in Ihrer ts-Datei und Ansicht.

Ich habe ein paar Proben hier, wenn Sie in einigen Arbeits Angular 2.0 Beispiele Interesse: http://www.syntaxsuccess.com/viewarticle/angular-2.0-examples

+1

Danke TGH, ich habe mein Programm zum Laufen gebracht. Nachdem ich ein paar Tutorials von Angular2 gelesen hatte, stellte ich fest, dass es zu viele veraltete Dokumente gab, Updates unterbrach usw. Ich entschied mich zu warten, bis die stabile Version angekommen war. Aber schätze deine Hilfe :) – Franva