2017-04-03 86 views
0

我想比較兩個由於API調用而不斷變化的變量。Angular 2 DOM綁定數據不準確

想一想股票櫃檯。如果股票增加,我想知道這一點,如果它減少。

在API調用之前,我存儲一個調用實例(對象數組),然後將它與新版本的調用進行比較。這一切都有效,因此我可以讓控制檯告訴我是否有增加或減少。

我將這些信息存儲在數組中,根據結果將布爾值更改爲true或false。

完美,一切都很好,工作。但是,當我使用* ngFor循環將這些精確值綁定到DOM時,我想循環所有對象,它們的值始終爲false(默認值)。他們從來沒有真正改變,即使這些console.log說,他們是。

爲什麼DOM不能正確綁定值?

DOM

<div class="ticker" *ngFor="let coinresult of coinResults; let beforecoinresult of beforeCoinResults; let aftercoinresult of afterCoinResults;"> 
    <div class="wrapper" *ngIf="coinresult.name != step2Selection"> 
     <!--<h1 *ngIf="match === false">Before: {{beforecoinresult.amount}} - After: {{aftercoinresult.amount}}</h1>--> 
     <div class="pin" (click)="pinTitle(coinresult.amount, coinresult.name)"> 
      <i class="material-icons" *ngIf="pinnedCoinAmount != coinresult.amount">gps_not_fixed</i> 
      <i class="material-icons selectedCoin" *ngIf="pinnedCoinAmount === coinresult.amount">gps_fixed</i> 
     </div> 

     <div class="amount" [ngClass]="{amountpinned: pinnedCoinAmount === coinresult.amount, 
             amountincrease: beforecoinresult.increase, 
             amountdecrease: beforecoinresult.decrease}"> 
             {{coinresult.amount}} 
     </div> 
     <div class="name" [ngClass]="{ namepinned: pinnedCoinAmount === coinresult.amount, 
             nameincrease: beforecoinresult.increase, 
             namedecrease: beforecoinresult.decrease}"> 
             {{coinresult.name}} 

     </div> 
     {{beforecoinresult.increase}} {{beforecoinresult.decrease}} 
    </div> 

接口

export interface coinResultsType{ 
    name: string, 
    amount: number, 
    increase: boolean, 
    decrease: boolean 
} 

即使世界邏輯的一噸我的成分,但我不張貼看到價值,它的工作原理和偉大工程。所以我附上了一個正在登錄的控制檯的圖像:

console.log(beforeCoinResults[0].increase); 
console.log(beforeCoinResults[0].decrease); 

但是,在CAD報價器中,你可以看到那裏都是假的。現在,他們的信息發生很快,所以你可以說它已經變成了假,但是我確信我正在看,但他們都是假的。

enter image description here

回答

1

而不是使用console.log調試代碼,使用debugger停止代碼執行和手動檢查值。原因是console.log可能與您的代碼執行不同步,並且當數據顯示在控制檯上時,它可能已經更改。我知道,這聽起來很混亂,特意從sync的角度考慮console.log,而不是async的觀點。

您的代碼可能正常工作,可能是console.log未正確顯示值。