javascript - 刷新页面后Angular 4 Reactive Form启用字段

标签 javascript angular angular4-forms angular-reactive-forms

我有一个在 angular 4 中声明的 reactive from

this.userForm = this.fb.group({
  "id": [user ? user.id : ""],
  "profile": this.fb.group({
    "email": [user && user.profile.email ? { value: user.profile.email, disabled: true } : "", Validators.compose([Validators.required, Validators.email])],
  }),

  "username": [user && user.username ? { value: user.username, disabled: true } : "", Validators.compose([Validators.required, GlobalValidator.usernameFormat])],
})

默认情况下,如果我的表单填写了表单字段(电子邮件、用户名)的数据,则该表单字段将被禁用。 我面临的问题是,如果我刷新页面,表单字段将显示为已启用。

(已编辑)

    ngOnInit() {
       this.buildForm()
       if (this.activatedRoute.snapshot.params.id) {
         this.service.getUser(Number(this.activatedRoute.snapshot.params.id)).subscribe((user) => {
          this.buildForm(user)
        }) 
       }
     }
     buildForm(user?:any){
       this.userForm = this.fb.group({
         "id": [user ? user.id : ""],
         "profile": this.fb.group({
          "email": [user && user.profile.email ? { value: user.profile.email, disabled: true } : "", Validators.compose([Validators.required, Validators.email])],
      }),

      "username": [user && user.username ? { value: user.username, disabled: true } : "", Validators.compose([Validators.required, GlobalValidator.usernameFormat])],
    })

最佳答案

为了解决这个问题,我更改了我的代码:

之前:

"username": [user && user.username ? { value: user.username, disabled: true } : "", Validators.compose([Validators.required, GlobalValidator.usernameFormat])],

之后:

this.userForm = this.fb.group({
username : this.fb.control("")
})
if(user){
this.userForm.get("username").setValue(user.username)
this.userForm.get("username").disable()
}

关于javascript - 刷新页面后Angular 4 Reactive Form启用字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47538990/

相关文章:

javascript - HTML5 动画和缓动

javascript - ember.js 包括自定义 js

javascript - 更简单的方法来做到这一点? - CSS/JS

angular - 在 CanActivate guard 中获取目标路由 URL Lazy load modules Angular

javascript - IE11 访问被拒绝错误

angular 6 "ExpressionChangedAfterItHasBeenCheckedError" react 形式动态表单验证添加和删除

Angular 4,获取表单数据,编辑和上传

javascript - 找不到 Discord.js 音乐机器人 ffmpeg?

Angular 2/4 自动完成搜索框

Angular 4 mat-form-field with mat-select