Я следую учебнику Angular по Tour of Heroes и сейчас пытаюсь интегрировать наблюдаемые в мой проект. После изменения файла hero.service.ts, чтобы он выглядел следующим образом
import { Injectable } from '@angular/core';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
import { Observable } from 'rxjs/Rx';
import { of } from 'rxjs/observable/of';
@Injectable()
export class HeroService {
constructor() { }
getHeroes(): Observable<Hero[]> {
return of(HEROES);
}
}
Я не получаю следующую ошибку
ОШИБКА в src / app / heroes / heroes.component.ts (27,5): ошибка TS2322: тип
«Observable» нельзя назначить типу «Hero []». Имущество
«include» отсутствует в типе «Observable».
Я не совсем уверен, что я здесь делаю неправильно. На самом деле у меня нет свойства «include» в определении моего героя. Этот класс выглядит так
export class Hero {
id: number;
name: string;
}
Вот ссылка на мой проект , хотя я не могу запустить его в стеке blitz
Я перечислю полный код здесь
heroes.component.ts
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
import { HeroService } from '../hero.service';
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
constructor(private heroService: HeroService) { }
selectedHero: Hero;
heroes: Hero[];
ngOnInit() {
this.getHeroes();
}
onSelect(hero: Hero): void {
this.selectedHero = hero;
}
getHeroes(): void {
this.heroes = this.heroService.getHeroes();
}
}
hero.service.ts
import { Injectable } from '@angular/core';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
import { Observable } from 'rxjs/Rx';
import { of } from 'rxjs/observable/of';
@Injectable()
export class HeroService {
constructor() { }
getHeroes(): Observable<Hero[]> {
return of(HEROES);
}
}
hero.ts
export class Hero {
id: number;
name: string;
}
макет heroes.ts
import { Hero } from './hero';
export const HEROES: Hero[] = [
{ id: 11, name: 'Mr. Nice' },
{ id: 12, name: 'Narco' },
{ id: 13, name: 'Bombasto' },
{ id: 14, name: 'Celeritas' },
{ id: 15, name: 'Magneta' },
{ id: 16, name: 'RubberMan' },
{ id: 17, name: 'Dynama' },
{ id: 18, name: 'Dr IQ' },
{ id: 19, name: 'Magma' },
{ id: 20, name: 'Tornado' }
];