Tour of Heroesのチュートリアルでは、次の2箇所でrouterLink
が使われています。
<!-- 1. routerLinkを[]で括らない場合 --> <a routerLink="/dashboard">ダッシュボードへ</a> <!-- 2. routerLinkを[]で括る場合 --> <a *ngFor="ler hero of heroes" [routerLink]="[ '/detail', hero.id ]" >{{hero.name}}</a>
これはどちらでもいいというわけではありません。上記を逆にしてみます:
<!-- 1. routerLinkを[]で括らないべきだが、試しに括ってみる--> <a [routerLink]="/dashboard">ダッシュボードへ</a> <!-- 2. routerLinkを[]で括るべきだが、試しに括らない--> <a *ngFor="ler hero of heroes" routerLink="[ '/detail', hero.id ]" >{{hero.name}}</a>
するとコンパイルは通りますが(なんとかコンパイラで弾いてくれないもんですかね…) 1. についてはランタイムでエラーがでます。2.についてはエラーはでませんがリンクを正しく貼れません。
ググってみたところrouterLink
を[]
で括ると、=の右側をjavascriptの式として評価し、
括らないとリテラルな文字列として評価するそうです:
おそらくこれはrouterLink
に限ったことではなく、他のディレクティブでも該当すると思われます。