英雄如何绑定到使用.subscribe方法的服务内部?

时间:2019-06-05 06:38:37

标签: angular

我无法弄清楚是什么英雄绑定到了subscribe方法内部。当我摆脱英雄类型时,它仍然会在页面上显示我所有的英雄。因此,如果英雄没有绑定到服务内部的内容,那么它仍如何显示我的英雄?

以下是包含订阅方法的组件:

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 {

  heroes: Hero[];

selectedHero: Hero;

onSelect(hero: Hero): void {
  this.selectedHero = hero;
}

getHeroes(): void {
  this.heroService.getHeroes()
      .subscribe(heroes => this.heroes = heroes);
}

constructor(private heroService : HeroService) {}


 ngOnInit() { 
    this.getHeroes();
  }

}

这是英雄服务代码:

import { Injectable } from '@angular/core';
import { Hero } from './heroes/hero';
import { HEROES } from './heroes/mock.heroes';
import { Observable, of } from 'rxjs';
import { HeroesComponent } from './heroes/heroes.component';

@Injectable({
  providedIn: 'root'
})
export class HeroService {

  getHeroes(): Observable<Hero[]> {
    return of(HEROES);
  }

  constructor() { }
}

这是奇怪的部分:如果删除

heroes: Hero[];

英雄仍然显示出来。如果没有什么方法可以绑定到subscribe方法,那怎么可能呢?如果subscription方法没有绑定到英雄,那么英雄如何显示在页面上?

所有代码均已完成,直到英雄教程https://angular.io/tutorial/toh-pt4#subscribe-in-heroescomponent

中的在HeroesComponent中订阅

1 个答案:

答案 0 :(得分:0)

您获取英雄的服务方法:-

getHeroes(): Observable<Hero[]> {
    return of(HEROES);
  }

如果您在服务方法中删除了英雄,那么将不会有任何来源的英雄。