2016-06-24 5 views
0

私はangular2で作業していましたが、変数が特定のdatatype.i.eの場合に<div>タグをロードするためにngSwitchを使用できるかどうか不思議でした。このような 何か:変数が特定のデータ型であるときangular2のデータ型にngSwitchを使用します

<div [ng-switch]="value"> 
    <p *ng-switch-when="isObject(value)">This is Object</p> 
    <p *ng-switch-when="isArray(value)">This is Array</p> 
    <p *ng-switch-when="isBoolean(value)">This is Boolean</p> 
    <p *ng-switch-when="isNumber(value)">This is Number</p> 
    <p *ng-switch-default>This is Simple Text !</p> 
</div> 

これはdivタグをロードすることは可能でしょうか? もしそうでない場合は、これを回避する方法はありますか?おかげさまで

+0

は、なぜあなたはngIfを使用していませんか? –

答えて

1

代替はngIfを使用することです:

<p *ngIf="isObject(value)">This is Object</p> 
    <p *ngIf="isArray(value)">This is Array</p> 
    <p *ngIf="isBoolean(value)">This is Boolean</p> 
    <p *ngIf="isNumber(value)">This is Number</p> 
    <p *ngIf="!isObject(value) || !isArray(value) || !isBoolean(value) || !isNumber(value)">This is Simple Text !</p> 
+0

ngIfは最初に見つかったfalseに応答しますか?面白い。 ||本当にそれが本当にそれを見ている声明のそれぞれを評価するでしょうか?コードは混乱を出力するはずです。 – rbnzdave

+0

もう一つの方法として、 'true'値に評価されるすべての' p'タグを表示します – AngJobs

1

はい、これを行うことはできますが、今すぐテンプレートで直接行うことができます。ただ、種類をチェックするために、コントローラのメソッドを作成します。

import {Component} from '@angular/core' 

@Component({ 
    selector: 'my-app', 
    providers: [], 
    template: ` 
    <div> 
     <div [ngSwitch]="checkType(name)"> 
     <p *ngSwitchCase="'string'">is a string!</p> 
     <p *ngSwitchDefault>default</p> 
     </div> 
    </div> 
    `, 
    directives: [] 
}) 
export class App { 
    constructor() { 
    this.name = 'Angular2 (Release Candidate!)' 
    } 

    checkType(value) { 
    return typeof value 
    } 
} 

Working Plunker


を最初のRC版へのあなたの角度を更新してください。

関連する問題