2017-12-27 6 views
0

API結果からモデルを塗りつぶしているときに奇妙な問題に直面しています。ブール値に角2の問題を伴うTypescript

は私のモデルは次のようになります。

import {Company} from './../api/odata/data/Company'; 

export class MyModel { 
... 
isEnabled = false; 
.... 
    constructor(data: Company= null) { 
     try { 
      this.isEnabled = !data.isDisabled; 
      ... 
     } 
     ... 
} 

私は、データモデルを埋めるときdata.isDisabledが偽等しい場合、this.isEnabledが真でなければなりませんが、それはfalseを返します...

enter image description here

enter image description here

答えて

3

data.isDisabled文字列のバディです。複数の方法でそれをブール値に変換することができます。しかし、私はデータが最初にどこから来たのか不思議です。

data.isDisabledがブール値になることを保証する方法がない場合は、2つのことができます。

1文字列値が何であるかを確認し、その値に基づいてブール値を返します。私はisDisabledは実際のブール値である場合でも動作しますが、すべての3つの

これの最高を

this.isEnabled = eval(data.isDisabled); 

3 - 下位互換性の解決策をお勧めしません

this.isEnabled = data.isDisabled === 'true' ? false : true 

2-又は使用のeval、。

this.isEnabled = !JSON.parse(data.isDisabled); 

は、あなたの助けのためのhere

+0

感謝をboolean型への変換、文字列の詳細を参照してください、しかし、私は「真 『タイプの『ブール』とに適用することはできません演算子『===』『を取得します』』。」あなたの最初の解決策を試してみると、会社のoDataクラスでisDisabledがbooleanとして宣言されています –

+0

'isDisabled'の型定義が間違っています。そうでなければjavascriptデバッガは' string'を表示しませんでした。 :D – Abdel

+0

ありがとう、それを変更した後、問題を修正しました。私はAPI devにこれを変更するよう依頼します。ブール値の文字列を返すのは普通ではありません。 –

関連する問題