【发布时间】:2021-05-27 07:17:06
【问题描述】:
我有一个侧边栏来显示工作进度。现在我有三个阶段。
一开始项目还没有开始,所以我希望所有的侧边栏项目都是灰色的。我希望当前阶段是基于前一个阶段完成的。 右侧有三个按钮。这是逻辑。
- 第一阶段工作。当我在第 1 阶段工作时,第 1 阶段侧边栏项目处于活动状态,颜色为绿色。第 2 阶段和第 3 阶段的项目仍处于非活动状态。
- 正在进行第 2 阶段。当我点击第 1 阶段完成按钮后,我们进入第 2 阶段,第 2 阶段显示为绿色,第 1 阶段仍处于活动状态,但没有颜色。
- 正在进行第 3 阶段。当我点击第 2 阶段完成按钮后,我们进入第 3 阶段,第 3 阶段显示为绿色,第 1 阶段和第 2 阶段处于活动状态,但没有颜色。
- 当我们进入下一阶段时,前一阶段项目的边界可见。
我的ts代码:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-sidenav',
templateUrl: './sidenav.component.html',
styleUrls: ['./sidenav.component.css']
})
export class SidenavComponent implements OnInit {
sidenavWidth = 10;
ngStyle: string;
active1: boolean;
active2: boolean;
active3: boolean;
constructor() {
}
ngOnInit() {
this.active1 = false;
this.active2 = false;
this.active3 = false;
}
submit1() {
this.active1 = true;
this.active2 = false;
this.active3 = false;
console.log('1');
}
submit2() {
this.active1 = true;
this.active2 = true;
this.active3 = false;
console.log('2');
}
submit3() {
this.active1 = true;
this.active2 = true;
this.active3 = true;
console.log('3');
}
}
我的html:
<mat-sidenav-container fullscreen>
<mat-sidenav #sidenav mode="side" class="example-sidenav" [ngStyle]="{ 'width.em': sidenavWidth }" opened="true">
<div class="logomain">Project progress</div>
<mat-nav-list>
<mat-list-item routerLink="1" [routerLinkActive]="[active1]" >
<div fxFlex="10"></div>
<div *ngIf="sidenavWidth > 6" class="sidenav-item">
<h5 class="lead">Phase 1</h5>
</div>
</mat-list-item>
<mat-list-item routerLink="2" [routerLinkActive]="[active2]">
<div fxFlex="10"></div>
<div *ngIf="sidenavWidth > 6" class="sidenav-item">
<h5 class="lead">Phase 2</h5>
</div>
</mat-list-item>
<mat-list-item routerLink="3" [routerLinkActive]="[active3]">
<div fxFlex="10"></div>
<div *ngIf="sidenavWidth > 6" class="sidenav-item">
<h5 class="lead">Phase 3</h5>
</div>
</mat-list-item>
</mat-nav-list>
</mat-sidenav>
<!-- <div class="example-sidenav-content">
<router-outlet></router-outlet>
</div> -->
<br><br><br>
<section>
<br>
<div class="example-button-row">
<button mat-raised-button color="primary" (click) ="submit1()">Phase 1 completed</button>
</div>
</section>
<mat-divider></mat-divider>
<br>
<section>
<br>
<div class="example-button-row">
<button mat-raised-button color="primary" (click) = "submit2()">Phase 2 completed</button>
</div>
</section>
<br>
.<section>
<br>
<div class="example-button-row">
<button mat-raised-button color="primary" (click) = "submit3()">Phase 3 completed</button>
</div>
</section>
<br>
</mat-sidenav-container>
我的问题。当我单击按钮时,侧栏项目不会因条件变灰。我也不确定如何将绿色应用于工作阶段。
最后我有很多项目而不是示例中的 3 个项目。我不想在点击事件中手动设置布尔值。
更新:
正确的可编辑stackblitz链接https://stackblitz.com/edit/angular-material-with-angular-sidenav-etrylt
【问题讨论】:
-
您能否分享一个指向 StackBlitz 的编辑链接,以便可以轻松地分叉示例?
-
@BizzyBob,抱歉。我更新了问题,链接是stackblitz.com/edit/…
标签: css angular angular-material angular11