web-dev-qa-db-de.com

FEHLER: Die Eigenschaft 'dann' ist bei Typ 'Held []' nicht vorhanden

app.component.ts -Datei

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 kann man diesen Fehler beheben?

10
Om Patel

Ihre this.heroService.getHeroes()-Methode gibt ein gelöstes Versprechen zurück.

Es sollte sein

this.heroes = this.heroService.getHeroes();
5
eko

Ich habe den gleichen Fehler bekommen; Nachdem ich ein paar Antworten gegoogelt hatte, stellte ich fest, dass Ihr Code sich nicht von mir unterscheidet und tatsächlich kein Fehler vorliegt. Sie müssen nur den ng-Dienst neu starten und dann erfolgreich kompiliert . Reference: Angular2 Tutorial: Promise-Fehler (Typ nicht zuordenbar) in Service

17
early

Anstatt

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

Versuche dies :

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

Es funktioniert

2
usefulBee