我有一个账户管理页面。在这个页面上有一个输入用户的电子邮件地址。在TypeScript文件中,我尝试根据当前用户设置电子邮件的值。当我在构造函数中设置值时,在ngOnInit()
中,或者在ngAfterContentInit()
中,该值不会显示在输入中。如果你在dev工具中查看,它会在ng-reflect-value
属性中显示该值。但是不会显示在输入中。另外两个值(emailVerified
和verificationText
)都按照我期望的方式工作,只是输入的值没有按照我期望的方式工作。
HTML程式码片段
<ion-item class="ion-margin-vertical" fill="solid">
<ion-label position="floating">Email</ion-label>
<ion-input [value]="userEmail" name="userEmail" type="email" ngModel email></ion-input>
<ion-button slot="end" [color]="emailVerified" class="ion-padding-start ion-no-margin" (click)="verifyEmail()">
<ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
{{ verificationText }}
</ion-button>
</ion-item>
TypeScript程式码片段
export class AccountSettingsComponent implements OnInit {
emailVerified: 'success' | 'warning' | 'danger' = 'warning';
verificationText: string = 'Verify';
userEmail: string | null = '';
user: User;
constructor(authService: AuthService) {
this.user = authService.getUserData()
this.userEmail = this.user.email
this.emailVerified = this.user.emailVerified ? 'success' : 'warning'
this.verificationText = this.user.emailVerified ? 'Verified' : 'Verify'
}
...
}
当我在ngAfterViewInit()
中设置值时,它显示输入中的值,但我得到一个错误,说某些值在检查后被更改。
1条答案
按热度按时间mrzz3bfm1#
当我创建这个问题时,我遇到了另一个question,它没有直接回答这个问题,但它确实包含了一个解决方案。
输入中使用的单向绑定位置错误。因为您使用的是
ngModel
,所以我们需要在该属性上添加单向绑定(双向绑定也可以,但只有在需要时才使用)。如下所示:这将使用
ngModel
属性(而不是value
属性)设置输入的起始值。