【问题标题】:Enable/disable buttons with Angular使用 Angular 启用/禁用按钮
【发布时间】:2018-03-05 12:54:24
【问题描述】:

我正在制作一个 Angular 4 的网络应用程序,我想出了一个问题。 如下:

我使用了一个名为 currentLesson 的属性。该属性有一个从 1 到 6 的可变数字。 在我的组件中,我列出了 6 节课,每节课都有自己的按钮来开始这节课。

在此列表中,只有当 currentLesson 具有课程编号的值时才能单击按钮:

第 1 课的按钮在以下情况下处于活动状态:currentLesson = 1

第 2 课的按钮在以下情况下处于活动状态:currentLesson = 2

等等。等等

所以如果 currentLesson = 2,第 1、3、4、5 和 6 课的按钮应该被禁用。

我有以下设置,但它似乎不起作用。 在我的组件中,我有:

export class ClassComponent implements OnInit {
  classes = [
{
  name: 'string',
  level: 'string',
  code: 'number',
  currentLesson: '1'
}]



checkCurrentLesson1 = function(classes) {
if (classes.currentLesson = 1) { 
 return true;
}
else {
 return false;
}
};

checkCurrentLesson2 = function(classes) {
if (classes.currentLesson = 2) {
 return true;
}
else {
 return false;
}
};

而我的html文件是这样的:

 <ul class="table lessonOverview">
    <li>
      <p>Lesson 1</p>
      <button [routerLink]="['/lesson1']" 
         [disabled]="!checkCurrentLesson1" class="primair">
           Start lesson</button>
    </li>
    <li>
      <p>Lesson 2</p>
      <button [routerLink]="['/lesson2']" 
         [disabled]="!checkCurrentLesson2" class="primair">
           Start lesson</button>
    </li>
 </ul>

(我只打印了六节课中的两节,但都是一样的)

有没有人给我解决方案或想法?

提前致谢,

马丁

【问题讨论】:

    标签: javascript angular typescript button


    【解决方案1】:

    为当前课程设置属性:currentLesson。显然,它将保留所选课程的“数字”。在每次单击按钮时,将currentLesson 值设置为按钮的“数字”/顺序,即对于第一个按钮,它将是“1”,对于第二个按钮,它将是“2”,依此类推。 现在可以使用 [disabled] 属性禁用每个按钮,如果 currentLesson 与其顺序不同。

    HTML

      <button  (click)="currentLesson = '1'"
             [disabled]="currentLesson !== '1'" class="primair">
               Start lesson</button>
      <button (click)="currentLesson = '2'"
             [disabled]="currentLesson !== '2'" class="primair">
               Start lesson</button>
     .....//so on
    

    打字稿

    currentLesson:string;
    
      classes = [
    {
      name: 'string',
      level: 'string',
      code: 'number',
      currentLesson: '1'
    }]
    
    constructor(){
      this.currentLesson=this.classes[0].currentLesson
    }
    

    DEMO

    把所有东西都放在一个循环中:

    HTML

    <div *ngFor="let class of classes; let i = index">
       <button [disabled]="currentLesson !== i + 1" class="primair">
               Start lesson {{i +  1}}</button>
    </div>
    

    打字稿

    currentLesson:string;
    
    classes = [
    {
      name: 'Lesson1',
      level: 1,
      code: 1,
    },{
      name: 'Lesson2',
      level: 1,
      code: 2,
    },
    {
      name: 'Lesson3',
      level: 2,
      code: 3,
    }]
    

    DEMO

    【讨论】:

    • 谢谢,现在清澈如水!我还有一个关于在其他组件中单击其他按钮时设置属性 'currentLesson' + 1 的问题,但也许最好我会为它提出一个新问题。
    【解决方案2】:
    export class ClassComponent implements OnInit {
      classes = [
    {
      name: 'string',
      level: 'string',
      code: 'number',
      currentLesson: '1'
    }]
    
    
    checkCurrentLession(current){
    
     this.classes.forEach((obj)=>{
        if(obj.currentLession == current){
          return true;
        }
    
      });
      return false;
    }
    
    
    <ul class="table lessonOverview">
            <li>
              <p>Lesson 1</p>
              <button [routerLink]="['/lesson1']" 
                 [disabled]="checkCurrentLession(1)" class="primair">
                   Start lesson</button>
            </li>
            <li>
              <p>Lesson 2</p>
              <button [routerLink]="['/lesson2']" 
                 [disabled]="!checkCurrentLession(2)" class="primair">
                   Start lesson</button>
            </li>
         </ul>
    

    【讨论】:

      【解决方案3】:
          <div class="col-md-12">
            <p style="color: #28a745; font-weight: bold; font-size:25px; text-align: right " >Total Productos a pagar= {{ getTotal() }} {{ getResult() | currency }}
            <button class="btn btn-success" type="submit" [disabled]="!getResult()" (click)="onSubmit()">
              Ver Pedido
            </button>
           </p>
          </div>
      

      【讨论】:

      • 您也应该提供解释。仅粘贴代码块会导致人们在不理解代码的情况下复制粘贴代码。
      【解决方案4】:

      my.component.html:

      <button [disabled]="isSubmitBtnDisabled" (click)="addGame()">Send</button>
      

      my.component.ts:

      export class My implements OnInit {
        isSubmitBtnDisabled: boolean= false;
      
         private someMethodYouCalled() {
            this.isSubmitBtnDisabled = true;   //Controls if button is disabled
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-16
        • 2021-06-08
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多