在onInit的ngForm上设置值

时间:2019-06-27 15:07:02

标签: javascript angular typescript

我有一个使用ngForm创建的表单,没关系。但是我需要恢复保存的信息。

ngOnInit() {
this.budgetId = this.activatedRoute.snapshot.params['id'];

if (this.budgetId) {
  this.budgetService.detailBudget(this.budgetId).subscribe(res => {
    this.orders = res.budget.orders;
    for (let [key, value] of Object.entries(res.budget)) {
      this.budgetForm.value[key] = value;
    }
  })
}
}

但是“ budgetForm”是:

<form #budgetForm="ngForm" (ngSubmit)="onSubmit(budgetForm)" novalidate>

但是,错误

TS2339: Property 'budgetForm' does not exist on type 'BudgetRegisterComponent'.

我如何在表格上设置值?

2 个答案:

答案 0 :(得分:0)

您似乎没有对表格的引用:

@ViewChild('budgetForm') NgForm budgetForm;

您要在Submit方法中传递budgetForm,并且在运行ngOnInit时,budgetForm是不确定的。

检查是否为空:

ngOnInit() {
    this.budgetId = this.activatedRoute.snapshot.params['id'];

    if (this.budgetId && this.budgetForm) {
        this.budgetService.detailBudget(this.budgetId).subscribe(res => {
            this.orders = res.budget.orders;
            for (let [key, value] of Object.entries(res.budget)) {
                this.budgetForm.value[key] = value;
            }
        })
    }
}

答案 1 :(得分:0)

对于ngForm中的设置值,请使用setValue()方法

this.budgetForm.setValue(res.budget)

但是,在需要之前,让对象逐个字段等于表单。我使用mongo,然后需要删除:

delete res.budget.__v
delete res.budget.__proto__

例如,在使用setValue之前。

谢谢大家!