2017-05-26 7 views
1

Aktualisiert.Angular2 Fehler beim Auflösen Promise: Geben Sie 'Promise <Hero[]>' ist nicht dem Typ 'Hero []' zuweisbar

Ich folge Angular2 Tutorial von https://angular.io/docs/ts/latest/tutorial/toh-pt4.html

Hier ist der Aufruf von HeroService von heroes.component.ts,

Heroes.component.ts

import { Component , OnInit } from '@angular/core'; 

import { Hero } from './hero'; 

import { HeroService } from './hero.service'; 



@Component({ 
    selector: 'my-heroes', 
    template: ` 


     <h2>My Heroes</h2> 
     <ul class="heroes"> 
      <li *ngFor="let hero of heroes"> 
       <span class="badge">{{hero.id}}</span> {{hero.name}} 
      </li> 
     </ul> `, 

}) 

export class HeroesComponent implements OnInit { 
    title = 'Tour of Heroes'; 
    heroes: Hero[]; 
    selectedHero: Hero; 

    constructor(private heroService : HeroService){ 

    } 

    getHeroes(): void{ 
     this.heroService.getHeroes().then(heroes => this.heroes = heroes); 
    } 

    ngOnInit(): void{ 
     this.getHeroes(); 
    } 


} 

Und getHeroes () Anruf in HeroService geschrieben

HeroService.ts

import { Injectable } from '@angular/core'; 
import { Hero } from './hero'; 
import { HEROES } from './mock-heroes'; 

@Injectable() 
export class HeroService{ 
    getHeroes() { 
     return Promise.resolve(HEROES); 
    } 
} 

ich die folgende Kompilierung Fehler:

Fehler TS2322: Typ 'Versprechen' ist nicht übertragbar 'Held []' eingeben. Eigenschaft 'Länge' fehlt im Typ 'Versprechen'.

Bitte vorschlagen.

+1

Können Sie bitte den vollständigen 'Component' Code für wo Sie diese 2 Funktionen haben bitte anzeigen? Sie können alles ausschließen, was in diesen Codeblöcken Ihres – borislemke

+0

auf dieser Seite des Tutorials nicht erwähnt wird, sollten Sie in den Helden-Service die Mock-Helden importieren. Hast du es richtig importiert? 'import {HEROES} aus './mock-heroes';' Und natürlich die Datei moch-heroes mit der Liste der Helden – quirimmo

+0

definieren Kannst du die komplette Error-Zeile angeben? Es sollte eine Datei- und Zeilennummer erwähnen. Ich habe einen Verdacht, aber die Zeilennummer wird dafür sorgen. Sagen Sie uns, auf welche Zeile in Ihrer Frage die Zeilennummer im Fehler – borislemke

Antwort

1

Ändern heroes: Hero[];-heroes: any; behebt das Problem, aber die Konsole gibt einen Fehler, weil ngFor nur iterables unterstützt. Am Ende, der Code kompiliert und die App läuft, aber es gibt dieses kleine Problem, das ich störe.

Verwandte Themen