2017-11-04 19 views
0

カード[]配列に「ヒット」ボタンが選択されているときに、新しいカードを押してください。私は方法の無数を試みたが、この単純な問題を釘付けにすることはできません。援助は非常に重要です!角4 - >配列にプッシュ

 @Component({ 
     selector: 'app-root', 
     templateUrl: './app.component.html', 
     styleUrls: ['./app.component.css'] 
     }) 
     export class AppComponent { 
     title = 'app'; 
     deck: any; 
     cards = []; 
     hand = 0; 
     cardCount: number; 

     constructor(private _data: DataService){ 
     console.log("Data Service ready to query api"); 
     this.cards = []; 
     }; 


     newDeck(){ 
      this._data.newDeck().subscribe(res => this.deck = res.json()); 

     } 

     deal(cardCount){ 

     this._data.deal(cardCount, this.deck.deck_id).subscribe(response => this.cards = response.json()); 
     if(this.cards) { 
      this.cards.push(this.cards); 
     } 
     } 

    } 

答えて

1

ので、あなたのアプローチは、間違っている:あなたが応答を受信すると

  • あなたはthis.cards
  • response.jsonを再割り当て
  • dealメソッドが呼び出されると、単純にサブスクライブしてからプッシュしますがtrueの場合、はそれ自身に配列します。

deal(cardCount) 
 
    { 
 
      this._data.deal(cardCount, this.deck.deck_id).subscribe(response => { 
 
          const cards = response.json() 
 
          if(cards) { 
 
           this.cards.push(cards); 
 
          } 
 
    });

0

は、あなたはそれが非同期であるとして内部、購読コードを配置する必要があり

deal(cardCount){ 
    this._data.deal(cardCount, this.deck.deck_id).subscribe(response => 
     if(response) { 
      this.cards.push(response.json()); 
     } 
    ); 
} 
+0

ねえ!私もこれを試しましたが、エラーが出ます - > ERROR TypeError:_this.cards.pushは関数ではありません –

+0

上記のコードを修正しましたか? – Dhyey

関連する問題