routerLinkの周りの[]はどういうケースでつけるのか?

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の式として評価し、 括らないとリテラルな文字列として評価するそうです:

stackoverflow.com

おそらくこれはrouterLinkに限ったことではなく、他のディレクティブでも該当すると思われます。