ダッシュボードのようなインターフェイスを構築し、以下のevent
オブジェクトなどのオプションのフィールドを持つ汎用オブジェクトを頻繁に受信します。テンプレートがロードされた時点でevent
が定義されておらず、daysRemaining ?: number
パラメータがある場合とない場合があります。設定されている場合は0
となります。より良い*連鎖と '0'値の検出?
0
値が実際に上記のシナリオで印刷されることを確実にするために、我々は、このパターンを使用する:プロパティ「の長さは」タイプ「番号」上に存在しないため
<div *ngIf="event?.daysRemaining?.toString().length > 0">
{{event.daysRemaining}} days
</div>
(.toString()
が必要です。)
私たちのオブジェクトツリーは、上記の例よりも深くとなる場合があります。親ツリーを<ng-container>
の*ngIf
で一般的なものにすることはできますが、ほとんどできません。
これを行うには、特にのすべてのオプションで.toString()
を呼び出す必要があります。
これは、より効率的なようだ:私たちは(そのようcolor: red
ときdaysRemaining < 0
)<div>
に物事を追加、オプションする必要がある場合、我々はまだすべてのチェックが必要であることを
<div>
{{event?.daysRemaining + ' days'}}
</div>
しかし、欠点があります。
コンポーネントコードはどこですか?投稿するように更新する – Aravind
@Aravind「イベント」を設定するサービスコールを除いて、コンポーネントには何も役立たず、なぜか私はそれを含まなかった。私は、この特定のケースに焦点を当てるのではなく、私が使用している反パターンであると考えることを実証することによって、一般的な問題を解決しようとしています。コンポーネントでより多くのチェックを行うことで、より良いやり方を提案すれば、是非共有してください。しかし、現在は何もしていません。 – msanford
あなたはどんなエラーを出していますか?あなたの投稿は混乱しています。 – Aravind