Почему в href не выполняется выражение?

В Angular, когда вы пытаетесь использовать выражение в атрибуте href, оно не выполняется по умолчанию. Это происходит потому, что атрибуты, такие как href, должны содержать только статические значения.

Однако, есть специальный синтаксис в Angular, который позволяет выполнять выражения внутри атрибутов. Для этого используется квадратные скобки [ ].

Например, вместо того чтобы написать:

<a href="{{myExpression}}">Ссылка</a>

вы можете использовать:

<a [href]="myExpression">Ссылка</a>

Теперь, Angular будет обрабатывать myExpression как выражение и вычислять его значение. Это позволяет динамически изменять значение атрибута href на основе данных в вашем компоненте или модели.

Кроме того, если вы хотите использовать URL-адрес, который сгенерирован Angular-маршрутизатором, вам следует использовать директиву routerLink вместо атрибута href. Директива routerLink предоставляет удобный способ генерации URL-адресов, основанных на вашей конфигурации маршрутизатора.

Например:

<a [routerLink]="['/myRoute']">Маршрут</a>

Здесь ['/myRoute'] - это массив, который представляет URL-путь для маршрутизатора.

Таким образом, использование квадратных скобок [ ] или директивы routerLink позволяет вам динамически генерировать URL-адреса и выполнять выражения внутри атрибутов href в Angular.