2017-05-10 2 views
10

app.component.ts DateiERROR: Property 'und dann' existiert nicht auf Typ 'Held []'

import { Component, OnInit } from '@angular/core'; 
import { Hero } from './hero'; 
import { HeroService } from './hero.service'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'], 
    providers: [HeroService] 
}) 

export class AppComponent 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(); 
    }; 
    onSelect(hero: Hero): void{ 
    this.selectedHero = hero; 
    }; 
} 

hero.service.ts

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

@Injectable() 
export class HeroService { 

    getHeroes(): Promise<Hero[]> { 
     return Promise.resolve(HEROES); 
    } 
} 

Wie dieses Problem zu beheben Error?

+0

Kannst du 'getHeroes' Methode in deinem Service zeigen? – echonax

+0

Erraten Sie, dass Sie 'Hero []' zurückgeben, was 'Promise ' stattdessen bei 'heroService.getHeroes()' sein sollte. – Pengyy

+0

held.service.ts Datei Import {Injectable} von '@ angular/core'; importiere {Hero} aus './hero'; importiere {HEROES} aus './mock-heroes'; @Injectable() Export Klasse HeroService { getHeroes(): Versprechen { Rückkehr Promise.resolve (HEROES); } } –

Antwort

5

Ihre this.heroService.getHeroes() Methode gibt eine aufgelöste Versprechung zurück.

Es sollte

this.heroes = this.heroService.getHeroes(); 
+1

oder 'this.heroService.getHeroes() bearbeiten dann ((Helden => this.heroes = Helden);' je nachdem, ob '| async' in der Ansicht verwendet wird. oder nicht –

2

Statt sein:

getHeroes(): Promise<Hero[]> { 
    return Promise.resolve(HEROES); 
} 

Try this:

getHeroes(): Promise<Hero[]> { 
    return new Promise(resolve => { 
    resolve(HEROES); 
}); 
} 

Es arbeitet

16

Ich habe den gleichen Fehler; Nachdem ich ein paar Antworten gegoogelt habe, habe ich festgestellt, dass dein Code nicht anders ist als ich und eigentlich kein Fehler. Sie müssen den ng serv nur neu starten und dann erfolgreich kompiliert werden. Referenz: Angular2 Tutorial: Promise error (type not assignable) in Service

+2

Das gleiche hier, editiert hero.service.ts und gespeichert, dann hat es funktioniert – Foad

+0

editieren von hero.service-datei half – nahab

+1

Dies sollte als die richtige Antwort markiert werden.I rekompiliert mit 'ng dienen' und es funktionierte –

Verwandte Themen