角度形式:选择一个值以更新另一个值

我正在使用Angular CLI和Angular Material来制作将数据发布到服务器上的API的表单,我想问两个问题:

  1. 在选择列表中,如果用户选择“完整”,则滑块值将固定为最大100%,如果用户选择“可选”,则滑块值将是正常的(最小10%,最大100%)。

  2. 在选择列表中,如果用户选择“完整”,则在按下提交时,它将向API发送“ 0”而不是标签“完整”,如果用户选择“可选”,则将向API发送“ 1”而不是标签“可选”。

我不知道如何实现上述要求,这是我正在使用的代码:

Form.component.html

<form [formGroup]="createItemForm">
    <fieldset>
        <div class="row">
            <div class="col-lg-6">
                <mat-form-field>
                    <mat-select placeholder="Select" formControlName="modeTaker" id="modeTaker">
                        <mat-option *ngFor="let value of modeTakers" value="value">{{ value }}</mat-option>
                    </mat-select>
                </mat-form-field>
            </div>
            <div class="col-lg-6">
                <span>Percent share</span>
                <mat-slider
                    thumbLabel
                    [displayWith]="formatLabel"
                    min="10"
                    max="100"></mat-slider>
            </div>
        </div>
    </fieldset>
    <button mat-raised-button type="submit" (click)="createItems()" class="btn btn-primary pull-right"
    [disabled]="!createItemForm.valid">Create a new items</button>
</form>

Form.component.ts

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { ApiService, NotificationService } from '@app/core';
import { Router } from '@angular/router';


createItemForm: FormGroup;
isSubmitting = false;
modeTakers = ['Full', 'Optional'];

constructor(
    private formBuilder: FormBuilder,
    private apiService: ApiService,
    private ns: NotificationService,
    private router: Router
) {
    this.createItemForm= this.formBuilder.group({
      'sharedPercent': [''],
      'modeTaker': ['']
    });
}

formatLabel(value: number) {
    if (value <= 100) {
      return Math.round(value) + '%';
    }
    return value;
}

createItems() {
    const item = Object.assign({}, this.createItemForm.value);
    this.isSubmitting = true;

    this.apiService.post('/itemslist/', item )
    .subscribe(({ name, id }) => {
      this.ns.showNotification(`New ${name} created`);
      this.router.navigate(['/itemslist', id]);
    },
    (error) => {
      this.ns.errorNotification(error);
    });
}
Prashant皮姆帕莱

积分:

1)可以使用valuemin并且max属性属性绑定的值动态:

HTML:

<mat-slider thumbLabel [displayWith]="formatLabel" [value]="sliderValue" [min]="minValue" [max]="maxValue"></mat-slider>

2)将您的JSON更改为此:

[{ text:"Full", value:"0"},{ text:"Optional", value:"1"}]

和HTML:

<mat-form-field>
    <mat-select placeholder="Select" id="modeTaker">
        <mat-option *ngFor="let obj of modeTakers" [value]="obj.value" (click)="onchange(obj)">{{ obj.text }}
        </mat-option>
    </mat-select>
</mat-form-field>

Component.TS代码:

import { Component } from "@angular/core";

@Component({
  selector: "slider-overview-example",
  templateUrl: "slider-overview-example.html",
  styleUrls: ["slider-overview-example.css"]
})
export class SliderOverviewExample {
  maxValue: any;
  minValue: any;
  sliderValue: any;
  modeTakers = [{ text: "Full", value: "0" }, { text: "Optional", value: "1" }];

  onchange(obj: any) {
    if (obj.value == 0) {
      this.sliderValue = 100;
      this.minValue = 10;
      this.maxValue = 100;
    } else {
      this.sliderValue = 50;
      this.minValue = 10;
      this.maxValue = 100;
    }
  }
}

HTML标记:

<mat-form-field>
    <mat-select placeholder="Select" id="modeTaker">
        <mat-option *ngFor="let obj of modeTakers" [value]="obj.value" (click)="onchange(obj)">{{ obj.text }}
        </mat-option>
    </mat-select>
</mat-form-field>
<mat-slider thumbLabel [displayWith]="formatLabel" [value]="sliderValue" [min]="minValue" [max]="maxValue"></mat-slider>

Online Demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫根据其他列的值从另一个更新一个df

来自分类Dev

用另一个系列的值覆盖(更新)一个熊猫系列?

来自分类Dev

将一个选择输入的选择值设置为另一个选择选项值

来自分类Dev

从另一个表SQL更新列值

来自分类Dev

如何从一个角度模块传递值到另一个模块?

来自分类Dev

SQL Server:更新,设置另一个选择内的一个值

来自分类Dev

在另一个值上选择一个值时更新下拉列表

来自分类Dev

选择一个列值大于另一个列值的行

来自分类Dev

努力从另一个表中选择一个值

来自分类Dev

从另一个表SQL Server更新值

来自分类Dev

片段选择:显示一个值并用另一个值完成

来自分类Dev

根据另一个值熊猫更新列

来自分类Dev

熊猫根据其他列的值从另一个更新一个df

来自分类Dev

更新一个表中另一个表中的值

来自分类Dev

从另一个JPanel更改一个变量的值时,更新JPanel的标签

来自分类Dev

选择一个值而不选择另一个

来自分类Dev

SQL Server-选择要基于另一个列值进行更新的列

来自分类Dev

更新一个表取决于另一个表的值

来自分类Dev

从一个模板到另一个以角度访问值

来自分类Dev

在选择另一个组合框之后,仅在组合框中显示更新的值

来自分类Dev

SQL Server查询以另一个表值更新一个表列值

来自分类Dev

如何使用JOIN从另一个表中选择一个值

来自分类Dev

根据另一个下拉列表选择一个下拉列表的值

来自分类Dev

根据另一个选择显示一个选择的下拉值

来自分类Dev

一个下拉字段导致另一个下拉字段的更新值

来自分类Dev

将 null 更新为一个值并插入到另一个表

来自分类Dev

mysql从另一个表更新列值

来自分类Dev

更新另一个类的值

来自分类Dev

如何在选择后为另一个 id 显示一个值

Related 相关文章

  1. 1

    熊猫根据其他列的值从另一个更新一个df

  2. 2

    用另一个系列的值覆盖(更新)一个熊猫系列?

  3. 3

    将一个选择输入的选择值设置为另一个选择选项值

  4. 4

    从另一个表SQL更新列值

  5. 5

    如何从一个角度模块传递值到另一个模块?

  6. 6

    SQL Server:更新,设置另一个选择内的一个值

  7. 7

    在另一个值上选择一个值时更新下拉列表

  8. 8

    选择一个列值大于另一个列值的行

  9. 9

    努力从另一个表中选择一个值

  10. 10

    从另一个表SQL Server更新值

  11. 11

    片段选择:显示一个值并用另一个值完成

  12. 12

    根据另一个值熊猫更新列

  13. 13

    熊猫根据其他列的值从另一个更新一个df

  14. 14

    更新一个表中另一个表中的值

  15. 15

    从另一个JPanel更改一个变量的值时,更新JPanel的标签

  16. 16

    选择一个值而不选择另一个

  17. 17

    SQL Server-选择要基于另一个列值进行更新的列

  18. 18

    更新一个表取决于另一个表的值

  19. 19

    从一个模板到另一个以角度访问值

  20. 20

    在选择另一个组合框之后,仅在组合框中显示更新的值

  21. 21

    SQL Server查询以另一个表值更新一个表列值

  22. 22

    如何使用JOIN从另一个表中选择一个值

  23. 23

    根据另一个下拉列表选择一个下拉列表的值

  24. 24

    根据另一个选择显示一个选择的下拉值

  25. 25

    一个下拉字段导致另一个下拉字段的更新值

  26. 26

    将 null 更新为一个值并插入到另一个表

  27. 27

    mysql从另一个表更新列值

  28. 28

    更新另一个类的值

  29. 29

    如何在选择后为另一个 id 显示一个值

热门标签

归档