Я читаю Маршрутизация и навигация в Angular. first()
оператор rxjs
не работает, и я получаю ошибку.
Вот мой сервис:
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { first } from 'rxjs/operators';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
@Injectable({
providedIn: 'root',
})
export class HeroService {
constructor() { }
getHeroes(): Observable<Hero[]> {
return of(HEROES);
}
getHero(id: string): Observable<Hero> {
// With the following code I get error
return this.getHeroes().pipe(
first(hero => hero.id === +id)
);
}
}
Вот мой герой:
export interface Hero {
id: number;
name: string;
}
Вот мои смутные герои:
import { Hero } from './hero';
export const HEROES: Hero[] = [
{ id: 11, name: 'Dr 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' }
];
А вот и моя ошибка:
Type 'Observable<Hero | Hero[]>' is not assignable to type 'Observable<Hero>'.
Type 'Hero | Hero[]' is not assignable to type 'Hero'.
Type 'Hero[]' is missing the following properties from type 'Hero': id, name
Я хочу получить только Героя с моим предназначением Я бы; как я могу это сделать?