提问人:Fractaliste 提问时间:10/19/2023 更新时间:10/20/2023 访问量:36
如何告诉 Angular 从 DOM 获取输入值?
How to tell Angular to get an input value from the DOM?
问:
我的工作的 SSO 以与我需要修复的 Angular 表单不兼容的方式填写我的登录表单。
问题是用户看到的表单是由 SSO 填写的:
Angular 的表单看不到任何值(上面屏幕截图的顶行),而如果我直接请求 DOM,则输入会提供得很好(我得到了以下带有断点的快照):
我不知道 SSO 在内部是如何工作的,有没有办法告诉 Angular 表单从 DOM 获得真正的价值?
表格是这样写的:
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<mat-input-container>
<input matInput name="userName" type="name" placeholder="User" formControlName="userName" required />
...
答:
-1赞
Natan
10/20/2023
#1
也许这会有所帮助:模板参考
0赞
Eliseo
10/20/2023
#2
我没有 SSO,所以我建议你试试:
在自己的声明中创建表单,而不是 ngOnInit
form=new FormGroup({ userName:new FormControl('',Validators.required) ... })
您也可以尝试使用 ngModel 为 formsControl 赋值 而不是直接使用 formControlName
<input matInput name="userName" type="name" placeholder="User" [ngModel]="form.controls.userName.value" (ngModelChange)="form.controls.userName.setValue($event)" [ngModelOptions]="{standalone:true}"> required />
实际上,您始终可以使用 setValue 为表单赋予值,但是 真的我不知道在哪里用。如果我想象在一个(焦点)事件中,甚至包含在 setTimeout 中
focus() { setTimeout(() => { const form: any = document.getElementsByTagName('form')[0]; Object.keys(this.form.value).forEach((key: string) => { const value: string = form.elements[key].value || ''; this.form.get(key)?.value != value && this.form.get(key)?.setValue(value); }); }) }
但真的我无法检查它是否有效
带有第三种选择的 StackBlitz
评论