【问题标题】:angular ng-autocomplete does not set initial value if is in a form如果在表单中,角度 ng-autocomplete 不会设置初始值
【发布时间】:2020-08-21 22:13:34
【问题描述】:

我在项目中使用 ng 自动完成功能,一切正常。 今天我发现了一个问题,我找不到解决方法。

基本上,如果自动完成功能位于响应式表单中,则属性“initialValue”不起作用。 我已经在互联网上搜索了没有运气。

我创建了一个堆栈闪电战来演示我的问题:https://stackblitz.com/edit/angular-ivy-crrlnv

有人可以帮助我吗? 谢谢

编辑:使用patchValue 找到解决方法,但如果我必须在后端调用后设置另一个值,patchValue 不起作用...很奇怪...

【问题讨论】:

  • 附言。我已经尝试了 setValue() 没有运气

标签: angular


【解决方案1】:

您在 formGroup 中为您的第一个 formControl 提供了一个空字符串的默认值:(因此您与 ng-autocomplete 初始值和 formControl 初始值发生冲突)

 this.providerForm = this.fb.group({
      test: ['']

    });

改成:

test: this.initialValue.name

初始值将起作用(您可以删除 ng-autocomplete 的初始值)。

【讨论】:

  • 感谢您的回复,但不是我的意思。在真正的应用程序中,我有一个后端调用,响应后我必须初始化该字段。但是测试一些解决方案我发现 patchValue 有效,但前提是我设置了自动完成值。如果我设置另一个字段,自动完成功能将停止工作。真的很奇怪
  • 没问题。我不确定我是否理解 100%,我尝试在 ngOnInit 中使用 patchValue (在您的示例中,您在构造函数中为 formControl 分配了一个值)并且它有效。还尝试使用 pathValue 为新字段分配一个值,并且它工作并且自动完成继续工作。
  • @Davide.77 正如 zohar 所说,从服务器获取数据时只需使用:this.providerForm.get('test').patchValue(this.initialValue.name) 。还要从ng-autocomplete 中删除initiavalue=... 属性,因为您将表单控件绑定到它。你可以在这里看到它:stackblitz.com/edit/…
猜你喜欢
  • 2021-09-24
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多