angular4应用中输入的最小值和最大值

Adr*_*ien 20 input max min angular

我有一个带有表单的angular4应用程序.在这个我输入一个百分比.所以,我想阻止值为0到100之间,我试图添加的输入min="0"max="100",但我还可以输入高于100或小于0的号码.

模板

<md-input-container>
  <input type="number" 
    maxlength="3" 
    min="0" 
    max="100" 
    required 
    mdInput 
    placeholder="Charge" 
    [(ngModel)]="rateInput" 
    name="rateInput">
  <md-error>Required field</md-error>
</md-input-container>
Run Code Online (Sandbox Code Playgroud)

你知道我怎么做吗?

Adr*_*ien 31

我成功使用了表单控件.这是我的HTML代码:

    <md-input-container>
        <input type="number" min="0" max="100" required mdInput placeholder="Charge" [(ngModel)]="rateInput" name="rateInput" [formControl]="rateControl">
        <md-error>Please enter a value between 0 and 100</md-error>
    </md-input-container>
Run Code Online (Sandbox Code Playgroud)

在我的打字稿代码中,我有:

        this.rateControl = new FormControl("", [Validators.max(100), Validators.min(0)])
Run Code Online (Sandbox Code Playgroud)

因此,如果我们输入的值大于100或小于0,则材料设计输入变为红色且该字段未验证.所以之后,如果值不好,我点击保存按钮时就不保存.

  • 为 Mateusz Adamczyk 发表评论:好的,我需要添加一个单独的答案,因为我刚刚创建了帐户来写下它,无法在 @Adrien 帖子中添加评论。不要将反应式表单与模板驱动的表单混合使用!我不知道为什么他在这里得到了最多的支持。请不要这样做。顺便说一句,我为这种情况找到的最佳解决方案:/sf/answers/3658162091/。 (5认同)
  • 注意:我发现我需要在模块中导入ReactiveFormsModule才能使用此解决方案。 (3认同)
  • 在类型脚本中的哪里输入“ this.rateControl ...”行?构造函数还是ngOnInit()还是某个地方? (2认同)
  • 不要使用这个。Angular 状态:请注意,Angular v6 中已弃用对使用 ngModel 输入属性和 ngModelChange 事件与反应式表单指令的支持,并计划在 Angular 的未来版本中删除。有关详细信息,请参阅已弃用的功能。来自 https://angular.io/api/forms/FormControlDirective#use-with-ngmodel (2认同)

San*_*per 9

实际上,当您使用type =“ number”时,输入控件将使用向上/向下箭头填充以递增/递减数字值,因此,当您使用这些按钮更新文本框值时,它不会超过100的限制但是当您手动输入120 / 130等,它将不会验证最大限制,因此您必须通过代码对其进行验证。

您可以禁用手动输入,或者必须在valueChange / textChange / key *事件上编写一些代码。

  • 哇!多数民众赞成在不好的事情不是最最基本的功能,否则在角度验证的重点是什么? (2认同)

Viv*_*shi 5

这是解决方案:

这是一种技巧,但可以使用

<input type="number" 
placeholder="Charge" 
[(ngModel)]="rateInput" 
name="rateInput"
pattern="^$|^([0-9]|[1-9][0-9]|[1][0][0])?"
required 
#rateInput2 = "ngModel">

<div *ngIf="rateInput2.errors && (rateInput2.dirty || rateInput2.touched)"
    <div [hidden]="!rateInput2.errors.pattern">
        Number should be between 0 and 100
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这里是链接到plunker,请看看。