我有一个带登录模态的Angular 应用程序,其中我接受用户输入,如他/她的电话号码。我已经使用[(ngModel)]=phoneNo
将此电话号码绑定到组件的phoneNo
属性。对于一个案例,我需要以编程方式与此应用程序交互,并通过在输入字段中输入电话号码,然后单击提交按钮来提交登录详细信息。
我尝试过通过设置元素的值来设置input的值,如
document.getElementById('phone').value = 1234567890;
这只是更新了我在屏幕上看到的值,而不是Angular 组件的属性。因此,当我单击提交按钮时,它接受组件中的默认值或我在网站上使用图形交互输入的值,而不是我想要的值。
我也尝试过使用setAttribute("phoneNo", 12345667890)
方法更新值,但也不起作用。事实上,如果我使用getAttributeNames
方法获取属性的名称,我看不到任何“value”或“phoneNo”属性,这是有意义的,因为我没有用HTML代码编写这些属性。
使用querySelector方法来选择组件然后分配属性也不起作用,问题是我无法访问我想更改的组件的实际属性。
我也尝试过在Angular 中使用formgroups
或formbuilders
,然后设置值,但我也没有看到任何control
和setValue
方法。
我的Angular 代码:
<form #f="ngForm" id="phone-form" [formGroup]="phoneForm">
<label for="phone">Phone Number *</label>
<div class="d-flex input-box">
<div>+91</div>
<input
type="text"
class="form-control special"
id="phone"
name="phone"
[(ngModel)]="phoneNo"
required
/>
</div>
..............
我在浏览器中看到的输入字段元素:
<input _ngcontent-vkb-c73="" type="text" id="phone" name="phone" required="" class="form-control special ng-untouched ng-pristine ng-valid">
1条答案
按热度按时间yfwxisqw1#
你应该在Angular中使用ReactiveForm。Javascript属性在Angular中不是一个好方法。
或者,也可以使用setValue方法将整个表单组设置为特定值。
我希望这个例子对你来说是清楚的,问题很快得到解决。