我想在Angular2中設置一個動態表單。 因此,在我的ngOnInit函數中,我提出了一個Ajax請求來獲取帶有表單數據的JSON。 像這樣:Angular2:Ajax表單數據返回null
export class CustomerEditComponent{
private customer : Customer = new Customer();
private customerForm;
constructor(private _CustomersService: CustomersService, private _routeParams: RouteParams, private _fb: FormBuilder){
this.customerForm = _fb.group({
name: [],
job: [],
arrival_date: []
});
}
ngOnInit(){
let id = this._routeParams.get('id');
this._CustomersService.getById(id).subscribe(res => {
this.customer = res;
});
}
onSubmit(event){
console.log(event);
}
}
所以,在組件結構,「客戶」是等於一個最新的一個。 (所有屬性都是空的)。但之後,我們爲每個屬性設定了價值。
沒問題,我的輸入有正確的值。
但是,如果我提交表單,表單值等於:
Object {name: null, job: null, arrival_date: null}
(但是在視圖的形式正確填充)。
這裏我的形式(冷凝):
<form [ngFormModel]="customerForm" (ngSubmit)="onSubmit(customerForm.value)">
<input md-input [(value)]="customer.name">
<input md-input [(value)]="customer.job">
<input md-input type="date" [(value)]="customer.arrival_date">
<button type="submit">Save</button>
</form>
我使用[(值)]原因NG2材料包。 (我已經嘗試與ngControl)。
我想我的代碼對這個功能是'錯誤的,但我不知道在哪裏。
謝謝!
編輯:
我已經找到了答案! 隨着NG2的材料,我們需要設置[(值)]和[(ngModel)]一起在這樣每個輸入:
<form [ngFormModel]="customerForm" (ngSubmit)="onSubmit(customerForm)">
<input md-input [(value)]="customer.name" [(ngModel)]="customer.name">
<input md-input [(value)]="customer.job" [(ngModel)]="customer.job">
<input md-input type="date" [(value)]="customer.arrival_date" [(ngModel)]="customer.arrival_date">
<button type="submit">Save</button>
</form>
[(值)]用於由NG2的材料來設定該值'在前面'。
是不是'農具OnInit'在類聲明中缺少? '導出類CustomerEditComponent實現OnInit'? –
在我目前的版本(2.0.0-beta.2)中,我們不需要實現OnInit(它沒有工作)。 – PallMallShow
哦好吧,沒有意識到在'beta.2' :) –