订阅中的角度分配对象

时间:2018-07-23 02:06:07

标签: angular

我正在遵循here的教程,但是我试图通过使用'card'而不是'hero'来稍微修改heroes.component.ts类。尝试致电.subscribe()时,我得到

  

src / app / card / card.component.ts(12,19)中的错误:错误TS1109:需要表达。

我的版本(注意卡片清单变量名称更改)

export class CardComponent implements OnInit {

  cardlist = Card[];    //-------LINE 12

   ....  
getCards(): void {
    this.cardService.getCards()     //--------LINE 19
        .subscribe(c => this.cardlist = c);
  }
}

这是我认为在getCards()函数内部发生的事情:

  1. 方法getCards()声明为返回类型为void
  2. 调用cardService(在文件顶部导入)以使用getCards()方法
  3. 调用.subscribe()来监听对该数据的更改
  4. 此位:c => this.cardlist = c表示从服务传入的每张卡c都将其添加到cardlist

很明显,我对第4步有误。我做错了什么?


有效的教程代码(为方便起见而复制):

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 {

  selectedHero: Hero;

  heroes: Hero[]; 

  constructor(private heroService: HeroService) { }

  ngOnInit() {
    this.getHeroes();
  }

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

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

2 个答案:

答案 0 :(得分:2)

您缺少一些括号,请按以下方法尝试

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

答案 1 :(得分:0)

export class CardComponent implements OnInit {

  cardlist = Card[];

   ....  
getCards(): void {
    this.cardService.getCards()
        .subscribe(c => { this.cardlist = c);
  });
}