2016-06-24 2 views
0

Я работал над angular2, и мне было любопытно узнать, могу ли я использовать ngSwitch для загрузки тега <div>, когда переменная имеет определенный тип данных.i.e. что-то вроде этого:use ngSwitch on datatype in angular2

<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 отвечает на первое ложное, которое находит? интересно. || будет оценивать каждое из утверждений, ищущих истину, обычно это не так? что означает, что код должен выводить беспорядок. – rbnzdave

+0

В обратном порядке отображаются все теги 'p', которые оцениваются значениями' true' – 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 версии первой.