Установка Angular 5 и .net core Web Api. На контроллере привязка модели всегда приводит к нулю при попытке привязки к сложному объекту.
Код указан ниже.
Этот пример адаптирован из другого SO ответа . но это не работает для меня.
Контроллер:
[Route("demopost1")]
[HttpPost]
public async Task < IntResultEntity > DemoPostList1([FromBody]DemoPostViewModel payload)
{
return await Task.FromResult(new IntResultEntity { Result = 0 });
}
Модели:
public class DemoPostModel {
public string RelationType { get; set; }
public int Weight { get; set; }
}
public class DemoPostViewModel {
public IList<DemoPostModel> SubUnits { get; set; }
}
Клиентская сторона:
export class DemoPostComponent implements OnInit {
constructor(private demoPostSvc: DemoPostService,
private fb: FormBuilder) { }
demoData: any[]
demoPostForm: FormGroup
submitDemoPost1(form: FormGroup) {
let formModel = form.value;
const payload = {
'subUnits': [
formModel.demoFormArray.map(element => ({
'relationType': element.relationType,
'weight': element.weight
}))
]
};
this.demoPostSvc.demoPost1(payload)
.subscribe(data => {
console.log("Post success.");
}, error => {
console.log("Post failed.");
});
}
ngOnInit() {
this.demoData = [
{ 'relationType': 1, 'weight': 2 },
{ 'relationType': 3, 'weight': 4 },
];
this.demoPostForm = this.fb.group({
demoFormArray: this.populateForm()
});
}
populateForm(): FormArray {
let formFields: any[] = [];
this.demoData.forEach(element => {
formFields.push(this.fb.group({
'relationType': element.relationType,
'weight': element.weight
}));
});
return this.fb.array(formFields);
}
}