angular-material - Mat输入值与显示文本
问题描述
我有一些垫子选择和自动完成,它们都采用一个对象并显示一个值,但是当我将表单发布到服务器时,它会发送一个不同的值。我试图用普通的垫子输入来完成同样的事情,但我没有看到一种方法来设置值和以不同的方式显示文本。我目前有这样的输入:
<mat-form-field appearance="outline">
<mat-label>Name</mat-label>
<input matInput type="text" formControlName="name">
</mat-form-field>
我希望输入接受这样的对象:
person= {
userName = 'testname1',
firstName = 'John',
lastName = 'Smith'
}
并在文本框中显示 person.firstName + ' ' + person.lastName 但输入的值应该是 person.userName
解决方案
我还尝试以不同的方式设置值和显示的文本,但没有成功。
对我有用的技巧是在 TypeScript 文件中添加一个新变量,并在输入中添加一个“onSelectionChange()”事件。这样,当下拉列表中的值发生更改时,用户会看到它,而且还会调用添加的事件,在该事件中我传递服务器所需的值以放入新变量中。
最后一件事,在从服务器发出请求之前,我将所需的值放在所示的位置,以便服务器获得所需的正确格式。
HTML 文件
<mat-autocomplete #auto="matAutocomplete">
<mat-option
*ngFor="let sample of samples$ | async"
[value]="sample.name"
(onSelectionChange)="setVariable(sample.id)"
>
{{ sample.name }}
</mat-option>
打字稿文件
onSubmit() {
this.sampleFormGroup.desiredValue = sample.id;
// Server request
}
推荐阅读
- angular - 如何修复 angular4 muliselect 下拉错误?
- mongodb - db.collection.deleteMany() 方法未检测到名称中包含“-”的文档集合(例如内部指标)
- spring-boot - 有什么方法可以将 Google Cloud Endpoint 包含到现有的 Google App 项目中
- google-chrome-extension - 仅在 Chrome 扩展程序的特定选项卡上注入 JS
- ios - 如何检查 UITableViewCell 标签是否被截断?
- c - 无法找到空 csv 值的空令牌值是什么
- model-view-controller - 当应用程序是 Razor 页面时如何在视图中使用 _Layout.cshtml
- spring-boot - 如何为特定 IP 和端口配置 Spring Boot LDAP 身份验证
- axios - 使用 axios 流式传输响应,但只需要特定的密钥
- python - 操作系统(任何或至少是 linux)会自动在内核之间分配启动的线程吗?