Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在angular中调用setter方法_Angular - Fatal编程技术网

如何在angular中调用setter方法

如何在angular中调用setter方法,angular,Angular,我想使用setter方法更新我的表单。。我应该在哪里调用setter方法? 这是我的component.ts代码 export class UpdateZoneComponent implements OnInit { profileForm: FormGroup products: any; h: number; constructor(private http: HttpClient, private formBuilder: FormBuilder, private route:

我想使用setter方法更新我的表单。。我应该在哪里调用setter方法? 这是我的component.ts代码

export class UpdateZoneComponent implements OnInit {
 profileForm: FormGroup
 products: any;
 h: number;
constructor(private http: HttpClient, private formBuilder: FormBuilder, private route: 
ActivatedRoute) { }
 ngOnInit() {
this.profileForm = this.formBuilder.group({
  zone_name: [''],
  zone_id: ['']
});
//这里的id来自具有click事件的组件

this.route.paramMap.subscribe(routeParam => {
  const id = +routeParam.get('id');
  console.log(id)
  this.h = id
})
this.http.get("http://192.168.8.219:8835/zonedata/" + this.h).subscribe(
  (res: any) => {
    console.log(res)
    const response = res.data;
    const nameZone = res.data.zone_name;
    console.log(nameZone)
  }
)
}
//这里我们想使用setter方法更新区域名称

set zone_name(name) {
console.log("hello")
let strg = this.profileForm.get("zone_name").setValue(name);
console.log(strg)
}
save(value: any) {
console.log(value)
const url = `${"http://192.168.8.219:8835/zonedata"}${this.h}`;
this.http.put(url, this.products).subscribe((dataa) => {
  console.log(dataa)
  this.zone_name();
})

}
}
 <form [formGroup]="profileForm" #zoneData (ngSubmit)="save(profileForm.value)">
                <div class="form-group row">
                    <label for="zname" class="col-sm-2 col-form-label">Zone Name</label>
                    <div class="col-sm-10 txt-box">
                        <input type="text" name="zname" formControlName="zone_name" 
                              id="zoneName" class="form-control" placeholder="Enter"  
                         [value]="zone_name" >
                            <p style="color: white">{{zone_name}}</p>
                    </div>
                </div>
                      <div class="form-group row">
                    <div class=" col-md-10">
                        <button type="submit"  class="a-btns btn btn-success">Save</button>
                      </div>
                </div>
               </form>
设置区域名称(名称){
log(“你好”)
设strg=this.profileForm.get(“zone_name”).setValue(name);
console.log(strg)
}
保存(值:任意){
console.log(值)
常量url=`${”http://192.168.8.219:8835/zonedata“}${this.h}`;
this.http.put(url,this.products).subscribe((dataa)=>{
console.log(dataa)
此.zone_name();
})
}
}
区域名称

{{zone\u name}

拯救
当您在angular中使用被动表单时,您当然不需要更新表单字段。值会自动更新。你会得到你所做的每一个改变

将其添加到构造函数中,您将发现对被动表单所做的更改

constructor() {
  this.profileForm.valueChanges.subscribe((res) => {
     console.log(this.profileForm.value);
  });
}

你可以试试下面的方法

this.http.put(url, this.products).subscribe((dataa) => {
if(dataa)
setNameZone(dataa);
 }) 
setNameZone(val)
{this.profileForm.controls.zone_name.setValue(val);
}

由于您使用的是被动表单,因此不一定需要更新表单字段。值会自动更新。你会得到你所做的每一个改变
this.profileForm.valueChanges.subscribe((res)=>{
console.log(this.profileForm.value);
})
Neel,考虑Sibabrat注释,顺便说一句,您使用
this.zone='what-ever'
执行“函数”
set zone_name(name){…}
-在函数中,name获得值“what-ever”