angular 2(現在はバージョンアルファ26)で遊んでいます。たとえばng-for
とng-if
は正常に機能していますが、ng-switch
に問題があります。機能させることができません。つまり、何も印刷されません。テンプレート全体が無視されているように見えます。
これは私のコンポーネントからのコードであり、 github にもあります:
import {Item} from "js/types/item";
import {Component, View, NgFor, NgIf, NgSwitch} from "angular2/angular2";
@Component({
selector: "item-details",
properties: [
"item"
]
})
@View({
template: `<span>You selected {{item.name}},</span>
<span [ng-switch]="item.name">
<template [ng-switch-when]="'Bill'">
<span> who is often called Billy.</span>
</template>
<template [ng-switch-when]="'Bob'">
<span> who is often called Bobby.</span>
</template>
<template [ng-switch-default]">
<span>who has no nickname.</span>
</template>
</span>
<div *ng-if="item.subItems">
<h2>Sub items:</h2>
<ul>
<li *ng-for="#subItem of item.subItems">{{subItem.name}}</li>
</ul>
</div>`,
directives: [NgFor, NgIf, NgSwitch]
})
export class ItemDetailsComponent {
item:Item;
}
基本的には、name
プロパティを持つアイテムを挿入する単純なコンポーネントです。 name
プロパティには実際に値があり、<span>You selected {{item.name}},</span>
行が正常に機能していることがわかります。
なぜそれが機能しないのかわかりません。私の理解から、すべてが正しいはずです。 githubのangularリポジトリ、 ユニットテスト など)と比較しました。
これらは私がチェックしたものであり、私は大丈夫だと信じています:
NgSwitch
はdirectives
を介してインポートおよび挿入されますitem
は実際に利用可能です(ただし、NgSwitch
のコンテキストではない可能性がありますか?)念のため、次のテンプレート(ハードコードされた文字列または数値の切り替え)のような些細なことも試しました。
<span [ng-switch]="'foo'">
<template [ng-switch-when]="'foo'">
<span> who is often called foo.</span>
</template>
<template [ng-switch-when]="'bar'">
<span> who is often called bar.</span>
</template>
</span>
そして、これも機能しないので、私が間違っているのは本当に基本的なことであるに違いありません。インターネット上で例やコードスニペットを見つけることができないのではないかと心配しています。よろしくお願いします。
NgSwitchWhen
とNgSwitchDefault
をインポートする必要があり、これらをインポートステートメントに追加します