解析Promise时出现Angular2错误:类型'Promise <hero []>'不能指定为'Hero []'类型

时间:2017-05-26 13:27:57

标签: javascript angular typescript angular-promise

更新

我正在关注Angular2教程  https://angular.io/docs/ts/latest/tutorial/toh-pt4.html

以下是来自heroes.component.ts,

的对HeroService的调用

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();
    }


}

用HeroService编写的getHeroes()调用

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);
     }
}

我收到以下编译时错误:

错误TS2322:类型'Promise'不能指定为'Hero []'类型。   “承诺”类型中缺少属性“长度”。

请建议。

1 个答案:

答案 0 :(得分:1)

viewWillAppear更改为heroes: Hero[];可解决此问题,但控制台会返回错误,因为heroes: any;仅支持ngFor。 最后,代码编译和应用程序运行但是这个小问题我发现破坏。