angular - NgModel 在密码更改时使用密码填充登录掩码中的所有输入字段
问题描述
我正面临一种奇怪的行为,对此没有任何解释。问题如下:当用户将用户和密码插入登录提示并且在幕后发生某些事情时,用户字段也填充了用户输入的密码。看起来表单在重新呈现时没有正确填充字段。
代码如下所示(出于演示目的进行了简化):
登录组件.ts
public selModule = { AuthProps: [{Name: "User", Display: "DUser"}, {Name: "Password", Display: "DPassword"}] };
public loginData: { [key: string]: string } = {};
public changePW() {
this.loginData['Password'] = "NewTestPw";
}
登录组件.html
<div *ngFor="let authProp of selModule?.AuthProps">
<label>{{ authProp.Display }}</label>
<input [type]="handleInputType(authProp)" [(ngModel)]="loginData[authProp.Name]" name="authProp.Name">
</div>
<button (click)="changePw()">Change PW</button>
因此,如果我输入用户名和密码,UI 中的输入元素和 loginDate 都会正确填充:
loginData: {User: "Testuser", Password: "Testpassword"}
User: Testuser
Password: TestPassword
通过单击“更改密码”按钮,仅更改了 loginData['Password'],但用户的输入字段也填充了“NewTestPW”。
loginData: {User: "Testuser", Password: "NewTestPW"}
User: NewTestPW
Password: NewTestPW
为什么会这样?
解决方案
这是意料之中的,因为您有两种方式将其与登录数据密码绑定,当您这样做时,如果 loginData.Password 将被更改,它将反映在文本框中。如果你不想改变你的行为
[(ngModel)]="loginData[authProp.Name]"
至
(change)="handleValue(authProp.Name, $event.target.value)"
在打字稿中
public handleValue(prop, value) {
this.loginData[prop] = value;
}
推荐阅读
- json - 在 Json 对象 Swift 5 中解析 Json 对象
- postgresql - 使用 btree ("") (Drupal) 在零长度标识符上的 Postgres 数据库导入失败
- python - 日期发布是 Django 中的预定义函数吗?
- php - 在前端显示上传到 s3 的图像 - 安全性
- r - 使用 R 中 usmap 包中的 plot_usmap 在同一张地图上绘制州和县边界
- linux - 在服务/流程中将 React + Spring Boot JAR 部署到 AWS EC2 Linux 服务器
- php - 将当前登录的用户 ID 存储在数据库中
- python - 为 python 安装 MIPCL-PY 开源优化求解器时遇到问题
- database-design - 在关系数据库中实现 1 到 0..1 关系的正确方法
- arduino - 如何使用 node-red 在 arduino 中触发功能?