Есть 2 RouterLink
директивы:
@Directive({selector: 'a[routerLink],area[routerLink]'})
export class RouterLinkWithHref implements OnChanges, OnDestroy {
}
@Directive({selector: ':not(a):not(area)[routerLink]'})
export class RouterLink {
}
Между ними есть некоторые небольшие различия, которые, я думаю, команда Angular чувствовала бы лучше, поддерживая две разные директивы .
Но чтобы ответить на ваш вопрос, да, ваш пример HTML работает. Вероятно, вы найдете что-то эквивалентное этому использованию в 99,99% Angular проектов.
<a [routerLink]="['/user/bob']" >
link to user component
</a>
Различия
a[routerLink]
имеют следующие дополнения:
constructor(/*args*/) {
this.subscription = router.events.subscribe((s: Event) => {
if (s instanceof NavigationEnd) {
this.updateTargetUrlAndHref();
}
}
}
ngOnChanges(changes: {}): any { this.updateTargetUrlAndHref(); }
И некоторая дополнительная обработка click
- чтобы переопределить обработку кликов по умолчанию <a>
и <area>
.
Ссылки
Исходный код: https://github.com/angular/angular/blob/master/packages/router/src/directives/router_link.ts
Документы для a[routerLink]
: https://angular.io/api/router/RouterLinkWithHref
Документы для :not(a)[routerLink]
: https://angular.io/api/router/RouterLink