html - 如何禁用 Angular Material 中的第二个 mat-list-item

标签 html angular angular-material

TLDR 第二个 mat-list-item 应该被禁用。

我想禁用侧面导航中的第二个选项,以便用户始终点击第一个选项,然后在保存第一页后导航至第二个选项。

<!-- navigation.component.html -->

<!-- ... -->

    <mat-nav-list class="mat-list-item-focus">
      <a mat-list-item routerLinkActive="active" routerLink='/cost-share'>Cost Share</a>
      <a mat-list-item routerLinkActive="active" routerLink='/penalty'>Penalty</a>
    </mat-nav-list>

<!-- ... -->

最佳答案

执行此操作的一种快速简便的方法,如果您在第一页上提交的内容是将 bool 类型的变量放入服务中,则可以在某种成功调用时对其进行修改。您可以使用该变量添加禁用的类,还可以检查 auth guard 中的 var。请看demo ,希望这对您有所帮助。

export class AppComponent {
  disabled = true;
  constructor(private exampleService: ExampleService) {
    this.exampleService.pageDisabled.subscribe(status => this.disabled = status);
  }
}

export class AuthGuard implements CanActivate {
  constructor(private router: Router, private exampleService: ExampleService) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    const isDisabled = this.exampleService.pageDisabled.getValue();
    return isDisabled ? false : true;
  }
}

export class ExampleService {
  pageDisabled: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);
  constructor() { }
}

@Component({
  selector: 'page-one',
  template: `
        <div>
            <div>Click on button to enable and navigate to page-two.</div>
            <button (click)="onClick()">Save</button>
        </div>
    `
})
export class PageOneComponent {
  constructor(private router: Router, private exampleService: ExampleService) { }

  onClick() {
    this.exampleService.pageDisabled.next(false);
    this.router.navigate(['/page-two']);
  }
}
<header>
  <nav>
    <a routerLink='page-one'>Page One</a>
    <a [ngClass]="{'disabled': disabled }" routerLink='page-two'>Page Two</a>
  </nav>
</header>
<section>
  <router-outlet></router-outlet>
</section>

关于html - 如何禁用 Angular Material 中的第二个 mat-list-item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390126/

相关文章:

javascript - 点击模态确定按钮时,按模态使用次数触发点击,无需刷新页面

angular - 一个 Observable 上的多个订阅是如何实现的

html - 有没有办法缩小 Material Design (AngularJS) <md-input> 元素?

javascript - 如果没有 setTimeOut,MatSort 和 MatPaginator 将无法工作

css - Angular Material MatFormField 外观 ="fill"主题问题

javascript - 在桌面上显示列,在移动设备上触发列

javascript - 查找哪个对象调用了函数

java - 使用 xpath 根据标题选择元素时出现问题

Bootstrap 中的 Angular2 提供程序与 @component

angular - node_modules/rxjs/BehaviorSubject 没有导出成员 'BehaviorSubject'