以反应形式从服务中设置 return 值

set return value from serve in rective form

我需要在 angular 6 中进行编辑。我用 asp 核心 2.1 创建 Web 服务器。

我有一页用于创建和编辑 role .

现在我需要从网络服务器设置反应形式的值。我该怎么做?

这个role.ts:

    export class RoleComponent implements OnInit {

  roleregister:FormGroup;
  roles:Role[];
  role:Role;
  public dpDiabled:boolean;
  public titleLenght:boolean;
  constructor(private rolseService:RoleServiceService,private formbuilder:FormBuilder,private route:ActivatedRoute) { 

    this.rolseService.GetAllRole().subscribe((data)=>{
      this.roles=data;
    });

  }

  ngOnInit() {
    this.roleregister=this.formbuilder.group({
      description:['',Validators.required],
      name:['',Validators.required],
      rolebase:[''],
      rolelevel:['',Validators.required]
    })

    const id= +this.route.snapshot.paramMap.get('id');
    console.log(id);
    this.rolseService.GetRoleById(id).subscribe((data)=>{
      this.role=data;
    });
  }

编辑

  <div class="roleitem">
    <div class="form-group">
        <label style="float:right;direction: rtl;" for="exampleInputEmail1"> زیر دسته  : </label>
      <br>
      <nz-form-control  [nzSpan]="12" >
        <nz-select formControlName="rolelevel" [nzDisabled]='dpDiabled' style="width: 351px;float: right;margin-right: -176px;margin-top: 10px;" name="select-validate">
          <div >
          <nz-option  style="text-align: center;" 
          *ngFor="let role of roles" nzValue={{role.id}} nzLabel={{role.description}}></nz-option>
        </div>
        </nz-select>
      </nz-form-control>
      </div>

</div>

一种选择是使用

this.roleregister.setValue({
    description: data.description,
    name: data.name,
    rolebase: data.rolebase,
    rolelevel: data.rolelevel
})

在 ngOnInit 中进行以下更改:

ngOnInit() {

    const id= +this.route.snapshot.paramMap.get('id');
    console.log(id);
    this.rolseService.GetRoleById(id).subscribe((data)=>{
      this.role=data;
      this.setFormData();
    });
  }

setFormData(){
  this.roleregister=this.formbuilder.group({
      description:[this.role.description,Validators.required],
      name:[this.role.name,Validators.required],
      rolebase:[this.role.rolebase],
      rolelevel:[this.role.rolelevel,Validators.required]
    })    
}

从服务器接收数据后设置表单的数据。

您可以像下面的代码一样使用 setValue 形成您的 formBuilder

this.rolseService.GetRoleById(id).subscribe((data)=>{
      this.role=data;
      this.roleregister.setValue({
      description: this.role.description,
      name: this.role.name,
      rolebase: this.role.rolebase,
      rolelevel: this.role.rolelevel
     })
   });

这可能有用 - 编码愉快!!