当点击我的Angular App的UI中的某个按钮时,会打开一个对话框,用户可以在其中更新他/她的个人信息。为简单起见,我将以下代码限制为他/她的用户名。也就是说,我假设用户只能在对话框中更改他/她的用户名。
打开对话框的代码如下:
Mage::app()->getStore()->getId()
文件update-personal-data.component.ts如下所示:
openDialog() {
this.dialog.open(UpdatePersonalDataComponent , {data: {
firstName: this.firstName,
username: this.username
}
});
}
目前文件update-personal-data.component.html如下所示:
import { Component, OnInit, Inject } from '@angular/core';
import { MAT_DIALOG_DATA } from '@angular/material';
@Component({
selector: 'app-consultants-update-dialog',
templateUrl: './consultants-update-dialog.component.html',
styleUrls: ['./consultants-update-dialog.component.css']
})
export class UpdatePersonalDataComponent implements OnInit {
constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }
ngOnInit() {
}
}
如您所见,我想使用以下代码将输入字段的默认值设置为旧用户名:
<form #f="ngForm" (ngSubmit)="onSubmit(f)" fxLayout="column" fxLayoutAlign="center center">
<h1 mat-dialog-title>Hi, {{ data.firstName }}. Update your username below.</h1>
<mat-dialog-content fxLayout="column" fxLayoutAlign="center">
<mat-form-field>
<input
matInput
ngModel
#userName="ngModel"
name="userName"
type="text"
value="{{data.username}}"
required>
</mat-form-field>
<mat-dialog-content
<mat-dialog-actions>
<button mat-raised-button color="primary" [mat-dialog-close]>Cancel</button>
<button type="submit" mat-raised-button color="primary" [mat-dialog-close] [disabled]="f.invalid">Submit</button>
</mat-dialog-actions>
</form>
然而,这不起作用。输入字段为空。 我也尝试了其他几种方法(例如[value] =&#34; {{data.username}}&#34;)但没有任何效果。 有没有人知道如何设置输入字段的默认值等于变量data.username的值(传递给对话框)?
答案 0 :(得分:5)
这将有效,请使用ngmodel
<input matInput
[(ngModel)]="data.username"
#userName="ngModel"
name="userName"
type="text"
required>
答案 1 :(得分:4)
我认为更好的方法是使用ReactiveForms模块的FormGroup。这样的事情。
在您的组件中。
public form: FormGroup = new FormGroup({
userName: new FormControl(''),
});
在你的HTML中
<form [formGroup]="form">
<mat-form-field class="full-width">
<input autocomplete="off" required matInput
formControlName="userName" placeholder="Username">
</mat-form-field>
</form>
现在,您可以控制您的FORM来执行此操作。
this.form.setValue({
userName: YOUR_VALUE,
});
答案 2 :(得分:4)
如果您不想使用formGroup,请在HTML <input>
<mat-form-field>
<input matInput [value]="username"
type="text" required>
</mat-form-field>
以及您的组件:
export class UpdatePersonalDataComponent implements OnInit {
constructor(@Inject(MAT_DIALOG_DATA) public data: any) {
this.username = data.username;
}
ngOnInit() {
}
答案 3 :(得分:0)
我知道我要参加聚会很晚,但这会在将来对任何人有帮助。
作为 @William Aguera 给出的答案,我正在编辑答案的最后一部分
this.form.patchValue({
userName: YOUR_VALUE,
});
在这里,我仅将 setValue 替换为 patchValue 。 我经常在编辑表单时使用它。