走当前路线的name/path
take the name/path of the current route
我有这个导航栏:
<nav class="menu">
<a routerLink="textArea" class="menu-item">text-area</a>
<a routerLink="dropdown" class="menu-item">dropdown</a>
<a routerLink="autosuggest" class="menu-item">autosuggest</a>
<a routerLink="manageCookies" class="menu-item">manage-cookies</a>
<a routerLink="progressBar" class="menu-item">progress-bar</a>
</nav>
<router-outlet></router-outlet>
和app.routing中声明的路由:
const routes: Routes = [
{
path: 'textArea',
component: TextAreaComponent,
},
{
path: 'dropdown',
component: DropdownComponent,
},
{
path: 'autosuggest',
component: AutosuggestComponent,
},
{
path: 'manageCookies',
component: ManageCookiesComponent,
},
{
path: 'progressBar',
component: ProgressBarComponent,
},
];
如果我点击的路线是 progressBar,我想将 class 应用到导航栏...我该怎么做?
明确地说,我会做这样的事情:
<nav class="menu" [class.myClass]="currentRoute === 'progressBar'">
.......
</nav>
您可以直接使用 routerLinkActive
属性 和 routerLink
。
<a routerLink="textArea" [routerLinkActive]="['myClass']">text-area</a>
<a routerLink="dropdown" [routerLinkActive]="['myClass']">dropdown</a>
这就是你应该如何使用路由器模块,你可以在 routerLinkActive 中传递任意数量的 类。您可以查看 here 了解更多详情。
<nav class="menu">
<a routerLink="textArea" [routerLinkActive]="['is-active', 'class 1']" class="menu-item">text-area</a>
<a routerLink="dropdown" [routerLinkActive]="['is-active']" class="menu-item">dropdown</a>
<a routerLink="autosuggest" [routerLinkActive]="['is-active']" class="menu-item">autosuggest</a>
<a routerLink="manageCookies" [routerLinkActive]="['is-active']" class="menu-item">manage-cookies</a>
<a routerLink="progressBar" [routerLinkActive]="['is-active']" class="menu-item">progress-bar</a>
</nav>
如果你想动态地做,你可以这样做:
<nav class="menu" [ngClass]="urlBased">
.......
</nav>
在你的 Ts 文件中添加一个方法来根据激活的路由填充 urlBased
:
// Sample code to follow
constructor(private router: Router) {
router.events.subscribe((url:any) => {
console.log(url)); // url will be the path or use this.router.url
//this.urlBased = this.router.url;
this.urlBased = url;
if(this.urlBased && this.urlBased.length > 0){
this.urlBased = this.urlBased.slice(1);
if (this.urlBased == 'progressBar') this.urlBased = progressBar;
}
}
}
我有这个导航栏:
<nav class="menu">
<a routerLink="textArea" class="menu-item">text-area</a>
<a routerLink="dropdown" class="menu-item">dropdown</a>
<a routerLink="autosuggest" class="menu-item">autosuggest</a>
<a routerLink="manageCookies" class="menu-item">manage-cookies</a>
<a routerLink="progressBar" class="menu-item">progress-bar</a>
</nav>
<router-outlet></router-outlet>
和app.routing中声明的路由:
const routes: Routes = [
{
path: 'textArea',
component: TextAreaComponent,
},
{
path: 'dropdown',
component: DropdownComponent,
},
{
path: 'autosuggest',
component: AutosuggestComponent,
},
{
path: 'manageCookies',
component: ManageCookiesComponent,
},
{
path: 'progressBar',
component: ProgressBarComponent,
},
];
如果我点击的路线是 progressBar,我想将 class 应用到导航栏...我该怎么做? 明确地说,我会做这样的事情:
<nav class="menu" [class.myClass]="currentRoute === 'progressBar'">
.......
</nav>
您可以直接使用 routerLinkActive
属性 和 routerLink
。
<a routerLink="textArea" [routerLinkActive]="['myClass']">text-area</a>
<a routerLink="dropdown" [routerLinkActive]="['myClass']">dropdown</a>
这就是你应该如何使用路由器模块,你可以在 routerLinkActive 中传递任意数量的 类。您可以查看 here 了解更多详情。
<nav class="menu">
<a routerLink="textArea" [routerLinkActive]="['is-active', 'class 1']" class="menu-item">text-area</a>
<a routerLink="dropdown" [routerLinkActive]="['is-active']" class="menu-item">dropdown</a>
<a routerLink="autosuggest" [routerLinkActive]="['is-active']" class="menu-item">autosuggest</a>
<a routerLink="manageCookies" [routerLinkActive]="['is-active']" class="menu-item">manage-cookies</a>
<a routerLink="progressBar" [routerLinkActive]="['is-active']" class="menu-item">progress-bar</a>
</nav>
如果你想动态地做,你可以这样做:
<nav class="menu" [ngClass]="urlBased">
.......
</nav>
在你的 Ts 文件中添加一个方法来根据激活的路由填充 urlBased
:
// Sample code to follow
constructor(private router: Router) {
router.events.subscribe((url:any) => {
console.log(url)); // url will be the path or use this.router.url
//this.urlBased = this.router.url;
this.urlBased = url;
if(this.urlBased && this.urlBased.length > 0){
this.urlBased = this.urlBased.slice(1);
if (this.urlBased == 'progressBar') this.urlBased = progressBar;
}
}
}