Angular2/material 2:当以编程方式更改值时,md-input-container 标签不会重置浮点数

Posted

技术标签:

【中文标题】Angular2/material 2:当以编程方式更改值时,md-input-container 标签不会重置浮点数【英文标题】:Angular2/material 2: md-input-container label is not resetting float when value is changed programmatically 【发布时间】:2017-05-18 03:23:08 【问题描述】:

我在使用 @angular/material 的 md-input-containers 和响应式表单模块时遇到问题。

我正在制作一个包含三个md-inputs 的登录表单,它们都使用FormBuilderFormGroup 绑定到值。那里的一切都很好。

我的问题是在 ngSubmit 函数中,如果输入的凭据无效,我将重置表单。使用FormGroup.reset() 方法会将值重置为默认值,但md-input-containers 中的浮动标签不会重置为其原始位置,因为它们应该位于空白字段中。我猜 Material Design 指令正在寻找一个模糊事件来更新它,但我不知道,我不知道如何强制它发生。

这是ngSubmit 函数:

  submitForm(username: string, password: string, companyID: any):void 

    this.userService.login(username, password, companyId)
      .then(() => 
        this.router.navigate(['main']);
      )
      .catch(() => 
        this.loginForm.reset();
      )
    

在调用this.loginForm.reset() 时,表单将重置为默认值(空字符串),但标签仍会浮动:

Labels still float. I reset Company ID for reference.

关于如何解决这个问题的任何想法?我真的不想调用ElementRef,尽管我已经尝试这样做来强制模糊,但这并没有解决它。

【问题讨论】:

如果这对任何人来说仍然是个问题,我建议制作一个 plunker 并在 github.com/angular/material2 上提交问题 【参考方案1】:

尝试使用 md-input 控件代替包装在 md-input-container 中的输入。 它对我有用。

【讨论】:

以上是关于Angular2/material 2:当以编程方式更改值时,md-input-container 标签不会重置浮点数的主要内容,如果未能解决你的问题,请参考以下文章

Angular2 Material Dialog css,对话框大小

当以编程方式完成时,视图不会反映任何变化

Angular2 Material SnackBar 集成问题

如何在angular2(material2)中设置小吃店的持续时间

无法绑定到“formControl”,因为它不是“输入”的已知属性 - Angular2 Material Autocomplete 问题

Angular 2 / Material - 应用到父 FormGroup 的自定义验证器未显示 md 错误