启用和禁用一个组件/HTML 中的所有元素

Posted

技术标签:

【中文标题】启用和禁用一个组件/HTML 中的所有元素【英文标题】:enable and desable all elements in one component/HTML 【发布时间】:2021-01-23 23:00:36 【问题描述】:

我是一名初学者开发人员,我正在尝试验证一些用户的权限访问,为此我构建了一个服务,该服务可以根据他们启用的视图来验证用户角色权限是否返回真或假。现在我有消息“欢迎”和“你无权访问”来测试它;现在我需要做的是启用所有页面/组件,然后启用一些功能(表单、按钮、表格视图等)或禁用所有组件,以防用户无权访问。我需要该用户可以看到该页面,但只有他拥有权限才能使用它。有人知道我该怎么做吗?

 export class WriteComponent implements OnInit 

  constructor(public userMngmtService: UserMngmtRolesService, public router: Router, public routeComponent : ActivatedRoute,public toaster: ToastrService) 

  

  ngOnInit()
    // this.route = this.router.url;
    // console.log('lelelel',this.route)
    var route = "write";
    var role = localStorage.getItem('roleId');
    this.userMngmtService.validatepermissions(role,route).subscribe(
      (canAccess: any) => 
        console.log('canAccess', canAccess);
        if(canAccess == true)

          this.toaster.success("Welcome!")
        else
          if(canAccess == false)
            this.toaster.error("U don't have permissions to access!")
          
        
      );
  


【问题讨论】:

【参考方案1】:

你可以在你的类中声明一个布尔属性,例如canAccess 然后在 if/else 语句中为该属性分配 true 或 false:

 export class WriteComponent implements OnInit 

   canAccess: boolean;

   constructor(public userMngmtService: UserMngmtRolesService, public router: Router, public routeComponent : ActivatedRoute,public toaster: ToastrService) 

   

   ngOnInit()
     var route = "write";
     var role = localStorage.getItem('roleId');
     this.userMngmtService.validatepermissions(role,route).subscribe(
       (canAccess: any) => 
         console.log('canAccess', canAccess);
         if(canAccess == true)
           this.canAccess = true; 
         else
           if(canAccess == false)
             this.canAccess = false;
           
         
       );
   

然后您可以在 html 中使用此属性和 *ngIf 来显示/不显示特定元素:

<div *ngIf="canAccess; else noAccess">
  Welcome
  <!-- put your forms, buttons, tables etc. in here -->
</div>

<ng-template #noAccess>
 <div>You do not have permission to view this</div>
</ng-template>

【讨论】:

以上是关于启用和禁用一个组件/HTML 中的所有元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在脚本中仅使用游戏对象启用 Unity C# 中的部件/组件

要启用或禁用按钮上的选择组件,请单击角度材质

extjs怎么让一个组件禁用?

如何通过脚本启用/禁用按钮组件?

如何在复杂的 vue 应用中启用禁用组件?

调用时禁用视图组件中的所有内容