在 Angular 9 中,如果您在 URL 指向的 URL 上,如何更改导航 link 的 HTMl?
In Angular 9, how do you change the HTMl of a navigation link if you are on the URL it is pointing to?
对于我的 Angular 9 应用程序,我有一个简单的应用程序布局
<app-navbar></app-navbar>
<router-outlet></router-outlet>
导航栏组件看起来像
<mat-toolbar color="primary">
<mat-toolbar-row>
<h1>My App</h1>
<span class="menu-spacer"></span>
<div>
<a mat-button [routerLink]="'/'"> Home </a>
<a mat-button [routerLink]="'/latest'"> Latest </a>
<a mat-button [routerLink]="'/current'"> Items </a>
</div>
</mat-toolbar-row>
</mat-toolbar>
我想弄清楚 Angular 方法是什么,如果用户已经在该页面上,则将 link 更改为纯文本而不是锚点。如果 URL 与我要路由到的内容匹配,则抑制 link 生成并仅显示文本的正确方法是什么?
您可以通过订阅导航栏中的路由器事件来查看当前路线
class NavbarComponent {
constructor(private router: Router) {
router.events.subscribe((val) => {
console.log(val)
});
}
}
https://angular.io/api/router/RouterEvent
也许 ActivatedRoute 对您来说是更好的解决方案:
export class NavbarComponent {
constructor(private activatedRoute: ActivatedRoute) {
activatedRoute.queryParams.subscribe(
params => console.log('queryParams', params));
})
}
试试这个,我想这就是你想要做的。
使用routerLinkActive
指定自定义cssclassanchor-to-text
<a mat-button [routerLink]="'/'" routerLinkActive="anchor-to-text"> Home </a>
在您的导航栏组件 css 文件中编写我们自己的 css 以使锚标记看起来像纯文本
.anchor-to-text {
cursor:text;
color:inherit;
text-decoration:none;
pointer-events:none;
}
对于我的 Angular 9 应用程序,我有一个简单的应用程序布局
<app-navbar></app-navbar>
<router-outlet></router-outlet>
导航栏组件看起来像
<mat-toolbar color="primary">
<mat-toolbar-row>
<h1>My App</h1>
<span class="menu-spacer"></span>
<div>
<a mat-button [routerLink]="'/'"> Home </a>
<a mat-button [routerLink]="'/latest'"> Latest </a>
<a mat-button [routerLink]="'/current'"> Items </a>
</div>
</mat-toolbar-row>
</mat-toolbar>
我想弄清楚 Angular 方法是什么,如果用户已经在该页面上,则将 link 更改为纯文本而不是锚点。如果 URL 与我要路由到的内容匹配,则抑制 link 生成并仅显示文本的正确方法是什么?
您可以通过订阅导航栏中的路由器事件来查看当前路线
class NavbarComponent {
constructor(private router: Router) {
router.events.subscribe((val) => {
console.log(val)
});
}
}
https://angular.io/api/router/RouterEvent
也许 ActivatedRoute 对您来说是更好的解决方案:
export class NavbarComponent {
constructor(private activatedRoute: ActivatedRoute) {
activatedRoute.queryParams.subscribe(
params => console.log('queryParams', params));
})
}
试试这个,我想这就是你想要做的。
使用routerLinkActive
指定自定义cssclassanchor-to-text
<a mat-button [routerLink]="'/'" routerLinkActive="anchor-to-text"> Home </a>
在您的导航栏组件 css 文件中编写我们自己的 css 以使锚标记看起来像纯文本
.anchor-to-text {
cursor:text;
color:inherit;
text-decoration:none;
pointer-events:none;
}