Angular 5 Material - 如何将mat-nav-list锚链接设置为在单击时处于活动状态

时间:2017-11-20 12:02:12

标签: angular angular-material

如何将锚链接设置为在我的实现中处于活动状态。

html的

<mat-nav-list class="conversation-list">
    <mat-list-item *ngFor="let conversation of conversations">
        <a (click)="goToChat(conversation)">{{getOtherUsers(conversation)}}</a>
    </mat-list-item>
</mat-nav-list>

<div class="chat-box">
    <router-outlet></router-outlet>
</div>

.TS

goToChat(conversation) {
    this.router.navigate(['main/chat/', conversation._id]);
}

.routing.module.ts

import { ChatComponent } from './chat.component';
import { ChatDetailComponent } from './chat-detail/chat-detail.component';

const CHAT_ROUTES = [
    {
        path: '',
        component: ChatComponent,
        children: [
            {
                path: ':id',
                component: ChatDetailComponent
            }
        ]
    },
];

以上代码循环用户对话并创建他们正在聊天的用户列表。每个列表项都是指向页面右侧聊天组件的链接。当用户单击链接并且我希望将其设置为活动时。

4 个答案:

答案 0 :(得分:9)

通过添加routerLinkActive指令将锚设置为“活动”类:

<mat-nav-list>
    <a mat-list-item routerLinkActive="active">{{link.title}}</a>
</mat-nav-list>

问题是Angular Material包中显然没有为活动状态定义样式:

角材料/ SRC / LIB /列表/ _list-theme.scss

角材料/ SRC / LIB /列表/ list.scss

所以必须定义一个活动样式:

.mat-nav-list a.active {
    background: blue;
}

答案 1 :(得分:2)

将routerLink设置为路由的路径,将routerLinkActive属性设置为要指示活动的类。

例如:

<a [routerLink]=`main/chat/'${conversation._id}` 
    routerLinkActive="active-link">{{getOtherUsers(conversation)}}</a>

现在使用css来定位

.active-link {
    background-color: grey;
}

注意:routerLinkActiverouterLink的属性 - 它只能与routerLink一起使用。

答案 2 :(得分:1)

您可以使用.mat-list-item-focus类来集中显示列表项:

<mat-nav-list>
  <mat-list-item class="mat-list-item-focus">Focused List Item</mat-list-item>
  <mat-list-item>Not Focused List Item</mat-list-item>
</mat-nav-list>

答案 3 :(得分:-3)

尝试使用类似的东西:

<a [routerLink]="['main/chat/',conversation._id]">{{getOtherUsers(conversation)}}</a>

有关https://angular.io/guide/router#router-links

的更多信息