2017-05-19 3 views
1

値の配列があり、利用可能な場合と使用できない場合がある数値の変数を持つvar_allがあります。angle 2:未定義の値をゼロで置き換えるためにパイプを使用する

次のコードを使用して値を表示するボックスのセットを作成しています。ボックスは変更されません。

<div id="box1">My variable one: {{var_all?.var_one}} </div> 
<div id="box2">My variable two: {{var_all?.var_two}} </div> 
<div id="box3">My variable three: {{var_all?.var_three}} </div> 

要素が使用できない場合、ボックスは塗りつぶされません。

この場合、何も表示せずにゼロの値を表示したいと思います。

パイプを使用する方法はありますか? または、js関数を使用してゼロで埋められた要素を作成する方が良いですか?

+2

これはおそらく実装するのが最も簡単なパイプになるでしょう。これは基本的にはif文です。参照:https://angular.io/docs/ts/latest/guide/pipes.html#!#custom-pipes –

+0

* ngIfを直接使用しないのはなぜでしょうか。なぜブッシュの周りに行くのですか? – Gary

答えて

5

あなたは本当に、パイプ、これはより柔軟である

を必要としない、とあなたは簡単にこのヌルチェックの一人一人のために任意の他

{{var_all?.var_one || "0"}} 

"0"を置き換えることができ、あなたはしないでくださいパイプをインスタンス化して関数を実行したい

+0

これが最良の選択肢ではないかもしれない唯一の状況は、後でアプリケーション全体で一貫して代替値を変更したい場合です。その場合、すべてのテンプレートでハードコードされていないほうがよいでしょう。しかし、大半のケースでは、これが行く方法です! –

+0

@JoeClay私は、あなたが簡単に '' 0 ''をハードコーディングする代わりに変数を提供することができます – Milad

+0

ありがとう、それは最も単純な解決策であることが証明されています。 – YCR

2

Joe Clayのコメントは、そのシンプルなパイプのようです。ここに1つの例があります。

ところで、あなたは間違いなくパイプを書いてそれらを書いて練習する方法を読むべきです。彼らはあなたがそれを掛けて非常に便利になったら、本当に簡単です。

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({name: 'noNull'}) 
export class NoNullPipe implements PipeTransform { 

    constructor() {} 

    transform(num: number | null): number { 
    return num ? num : 0; 
    } 
} 
+0

ありがとう、私はパイプで始まり、それはマイナーな問題に対処する非常に便利な方法であることが証明されています。 – YCR

+1

問題ありません。間違いなく、ジョブの正しいツールを使用してください。この場合、||オペレータは完璧です。しかし、あなたがパイプの他の用途を見つけることを願っています。あなたのニーズに合わせてこのパイプを簡単に変更することができます。 – mikias

関連する問題