【问题标题】:Angular 2 textarea won't accept value from JQueryAngular 2 textarea 不接受来自 JQuery 的值
【发布时间】:2018-03-17 10:06:56
【问题描述】:

我有一个具有输入文本区域字段的 Angular 2 应用程序:

<textarea id="projectDescription" required [(ngModel)]="projectDescription" [formControl]="createNewForm.controls['projectDescription']" style="margin-bottom:-2%;width:50%;"></textarea>

我们还有一个使用 Selenium 测试框架进行自动化测试的测试团队。他们正在尝试向 textarea 中注入一个值以使用

提交表单
$("#projectDescription").val("Test value");

但是,textarea 的文本没有得到更新(我们还使用了其他添加文本的迭代,即 text()、innerHTML = )。它适用于其他输入类型,例如“文本”,只有文本区域没有更新。这是一个已知问题吗?有解决办法吗?

编辑:我还应该注意,我什至无法更新站点上本地控制台中的值。但是当我删除 Angular 2 特定属性(即 ng-object ng-class)时,我能够更新值,因此 Angular 框架和 JQuery 之间的交互发生了一些事情。

【问题讨论】:

  • 是否可以删除任何 Angular 属性来修复它?
  • I should also note that I'm not even able to update the value in my local console on the site. 我试过了,它对我有用。你能提供一个不起作用的例子吗?

标签: jquery html angular


【解决方案1】:

请不要在使用 Angular 时使用 JQuery。可能在某些用例中您可能需要使用 JQuery,但如果真的发生的话,这些情况将非常罕见。相反,在 html 标记上放置一个本地元素 ref,如下所示(#projectDescription):

<textarea #projectDescription id="projectDescription" required [(ngModel)]="projectDescription" [formControl]="createNewForm.controls['projectDescription']" style="margin-bottom:-2%;width:50%;"></textarea>

在您的 ts 中,使用 @ViewChild 获取 ElementRef,如下所示:

@ViewChild('projectDescription') projectDescription: ElementRef;

确保从@angular/core 导入ViewChildElementRef

并使用以下方法操作文本区域的值:

this.projectDescription.nativeElement.value = "Whatever you want the value to be";

您还可以console.log(this.projectDescription) 来查看您可以操作的本机元素中的其他内容。

【讨论】:

  • 嗨!感谢您的回答!不幸的是,测试框架在我的 Angular 应用程序之外。我的应用程序中没有 JQuery 代码,我们使用 Selenium webdriver 来测试提交,所以测试代码使用 JQuery 来驱动应用程序流,它不访问任何内部 Angular 代码。我正在专门寻找有关如何合并 JQuery 测试框架的解决方案:)
  • 我明白了。我会将我的答案留给任何可能阅读您的问题并以我的方式思考的人。但是我可能会建议您稍微改一下您的问题,因为事实上,您的问题似乎与您的应用程序的 Angular 部分实际上没有任何关系,而是如何将另一个外部库与 Angular 结合使用。据我所知。
  • 对不起!我提到 Angular 的原因是我知道我的问题中的 JQuery 会在 textarea 中插入一个值,它只是专门针对我的 Angular 2 应用程序,它不会更新 textarea 中的文本。
  • 无需道歉。希望有人可以回答你的问题。不幸的是,我不熟悉 Selenium。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多