【问题标题】:Angular increment or decrement count角度增量或减量计数
【发布时间】:2018-09-02 05:47:27
【问题描述】:

我正在构建一个 Angular 5 应用程序来跟踪利润。 我的应用程序有多个输入字段。

如果我卖巧克力,我会按 + 按钮来增加数量。

如果我卖 Wine,我会按 Wine 输入旁边的 + 按钮来增加计数。

现在我使用了 incrementchoc() 函数来增加巧克力的数量 和 incrementwine() 函数来增加酒的数量。

下面是我的 HTML:

 <div >
                <label>Chocolate:</label><br>
            <div class="input-group">
              <span class="input-group-btn">
                  <button type="button" class="btn btn-danger btn-number" (click)= "decrementchoc()" data-type="minus" data-field="quant[2]">
                    <span class="glyphicon glyphicon-minus"></span>
                  </button>
              </span>

              <input type="text" name="quant[2]" [(ngModel)]="info.choco" (keyup)="choc(info.choco)" class="form-control input-number" value="{{info.choco}}" >

              <span class="input-group-btn">
                  <button type="button" class="btn btn-success btn-number"  (click)= "incrementchoc()" data-type="plus" data-field="quant[2]">
                      <span class="glyphicon glyphicon-plus"></span>
                  </button>
              </span>
          </div></div>



<div >
                    <label>Wine:</label><br>
                <div class="input-group">
                  <span class="input-group-btn">
                      <button type="button" class="btn btn-danger btn-number" (click)= "decrementwine()" data-type="minus" data-field="quant[3]">
                        <span class="glyphicon glyphicon-minus"></span>
                      </button>
                  </span>

                  <input type="text" name="quant[3]" [(ngModel)]="info.wine" (keyup)="wine(info.wine)" class="form-control input-number" value="{{info.wine}}" >

                  <span class="input-group-btn">
                      <button type="button" class="btn btn-success btn-number"  (click)= "incrementwine()" data-type="plus" data-field="quant[3]">
                          <span class="glyphicon glyphicon-plus"></span>
                      </button>
                  </span>
              </div></div>

我也附上一张图片。 This is how my HTML looks like with the - and + buttons

下面是我的 Component.ts 文件的代码

 incrementchoc(){
    this.info.choco= ++this.info.choco;
  }

  decrementchoc(){
    this.info.choco= --this.info.choco;
  }


   incrementwine(){
    this.info.wine= ++this.info.wine;
  }

  decrementwine(){
    this.info.wine= --this.info.wine;
  }

您可以从上面的代码中清楚地看到,如果我有 n 个输入字段,那么我将不得不编写 n 个递增和递减函数。我认为这会使应用程序变得非常繁重。

请建议我一种更好的方法,通过使用单个函数通过检测输入的 ngModel 并仅递增/递减该值而不是编写 n 个函数来递增递减值。

【问题讨论】:

    标签: angular increment decrement


    【解决方案1】:

    您可以直接在组件模板中进行递增和递减操作。你不需要为那些使用组件代码。

    例如:

    <button type="button" class="btn btn-danger btn-number"
            (click)="info.choco = info.choco - 1" data-type="minus" data-field="quant[2]">
        <span class="glyphicon glyphicon-minus"></span>
    </button>
    

    完整代码:

    <div>
        <label>Chocolate:</label><br>
        <div class="input-group">
            <span class="input-group-btn">
                <button type="button" class="btn btn-danger btn-number"
                        (click)="info.choco = info.choco - 1" data-type="minus" data-field="quant[2]">
                    <span class="glyphicon glyphicon-minus"></span>
                </button>
            </span>
    
            <input type="text" name="quant[2]" class="form-control input-number"
                    [(ngModel)]="info.choco" (keyup)="choc(info.choco)" value="{{info.choco}}" >
    
            <span class="input-group-btn">
                <button type="button" class="btn btn-success btn-number"
                        (click)="info.choco = info.choco + 1" data-type="plus" data-field="quant[2]">
                    <span class="glyphicon glyphicon-plus"></span>
                </button>
            </span>
        </div>
    </div>
    
    <div>
        <label>Wine:</label><br>
        <div class="input-group">
            <span class="input-group-btn">
                <button type="button" class="btn btn-danger btn-number"
                        (click)="info.wine = info.wine - 1" data-type="minus" data-field="quant[3]">
                    <span class="glyphicon glyphicon-minus"></span>
                </button>
            </span>
    
            <input type="text" name="quant[3]" class="form-control input-number"
                    [(ngModel)]="info.wine" (keyup)="wine(info.wine)" value="{{info.wine}}">
    
            <span class="input-group-btn">
                <button type="button" class="btn btn-success btn-number"
                        (click)="info.wine = info.wine + 1" data-type="plus" data-field="quant[3]">
                    <span class="glyphicon glyphicon-plus"></span>
                </button>
            </span>
        </div>
    </div>
    

    【讨论】:

    • 一个人可以简单地做info.choco++吗?
    • 模板不支持递增和递减运算符,会导致模板解析错误:angular.io/guide/template-syntax#template-expressions。该文档指出不支持赋值运算符,但这可能是旧的或仅限于特定上下文。我经常使用它们,没有问题。
    • 啊,再往下看一点,发现了区别。 模板表达式中不允许增减运算符和赋值,但模板语句中允许赋值(仍然不允许增减运算符):angular.io/guide/template-syntax#template-statements跨度>
    • 非常感谢@MikeHill 您的解决方案对我有用。这正是我所需要的。
    • 这是一个令人讨厌的约束(我正在尝试找到一种方法来增加两个不同 ngFors 的变量)。
    【解决方案2】:

    是的,目前的方法很重。您可以执行以下操作:

    increment(value: string) {
      if(value === 'wine') {
          this.info.wine = ++this.info.wine;
        }else if (value === 'choc'){
          this.info.choco= ++this.info.choco;
        }else{
          this.info.gir = ++this.info.gir;
        }
    }
    <button type="button" class="btn btn-success btn-number"  (click)= "incrementwine(wine)" data-type="plus" data-field="quant[3]">
        <span class="glyphicon glyphicon-plus"></span>
     </button>

    减量相同
    * 我没有检查代码的逻辑..只是重构了。

    【讨论】:

    • 我对您的代码进行了一些修改。只有 if(){ } 语句中的逻辑被执行。如果我按下葡萄酒的 + 按钮,那么它会增加葡萄酒的计数,但是当我对 choc 执行相同操作时,它也会增加葡萄酒的计数。请在下面查看 Mike Hill 的解决方案。它对我有用。你的解决方案也很有用,因为我要学习新东西。
    • 仅供参考:我正确传递了参数,即葡萄酒的增量(葡萄酒)和巧克力的增量(巧克力)
    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 2017-10-30
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多