美好的一天,
我一直在Angular 7和Asp.net核心网络api做自学。
现在我想从asp.net核心读取结果并在Angular 7中显示。
这是来自Asp.net Core的代码
[HttpPost("DataCorrection")]
public IActionResult DataCorrection([FromBody] DataCorrectionDto data)
{
try
{
var request = Request;
var values = _dataCorrection.GetDateRange(data.StartDate, data.EndDate);
return Ok(values);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
throw ex;
}
}
GetDateRange
方法返回DataCorrection Model
列表
这是我的角度代码
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-data-correction',
templateUrl: './data-correction.component.html',
styleUrls: ['./data-correction.component.css']
})
export class DataCorrectionComponent implements OnInit {
list: any[];
selectedDate = new Date();
form = new FormGroup({
StartDate: new FormControl(),
EndDate: new FormControl()
});
constructor(private http: HttpClient) { }
ngOnInit() {
}
onSubmit() {
this.http.post('http://localhost:5000/api/DataCorrection/DataCorrection', this.form.value)
.toPromise()
.then(res => {
this.list = res as any[];
console.log('Called');
});
}
}
这是Html代码
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<!-- <input formControlName="first" [(ngModel)]="value"> -->
<mat-form-field>
<input matInput formControlName="StartDate" [matDatepicker]="StartDate" placeholder="Start date">
<mat-datepicker-toggle matSuffix [for]="StartDate"></mat-datepicker-toggle>
<mat-datepicker #StartDate ></mat-datepicker>
</mat-form-field>
<mat-form-field>
<input matInput formControlName="EndDate" [matDatepicker]="EndDate" placeholder="End date">
<mat-datepicker-toggle matSuffix [for]="EndDate"></mat-datepicker-toggle>
<mat-datepicker #EndDate ></mat-datepicker>
</mat-form-field>
<div class="form-group">
<button class="btn btn-primary">Submit</button>
</div>
</form>
<tr *ngFor="let pd of list">
<td >{{pd.ActualLogin}}</td>
<td >{{pd.ActualLogout}}</td>
<td >{{pd.ShiftLogin}}</td>
<td>
<i class="far fa-trash-alt fa-lg text-danger" ></i>
</td>
</tr>
现在我怎样才能正确阅读它以便我可以将其加载到表格中。
使用上面的代码。它甚至没有填充表格。但它称之为console.log
我现在试着找几个小时的解决方案。但我迷路了。我不明白教程,我无法使它工作。
这是我的网络API的回复。我从chrome web浏览器的response
选项卡中读取它
{"emp_Id":963,"actualLogin":"05:00:11","actualLogout":"05:01:00","shiftLogin":"05:00:00","shiftLogout":"13:00:00","date":"2019-04-03T00:00:00Z"}
这个数据是我想在表格中填充的数据
谢谢。
我不认为这是问题,
你的模板中存在拼写错误,pd.ActualLogin
但实际上在JSON响应中拼写为actualLogin
。将模板更改为
<tr *ngFor="let pd of list">
<td >{{pd.actualLogin}}</td>
<td >{{pd.actualLogout}}</td>
<td >{{pd.shiftLogin}}</td>
<td>
<i class="far fa-trash-alt fa-lg text-danger" ></i>
</td>
</tr>
将结果保存在某个变量中
例
this.http.post('http://localhost:5000/api/DataCorrection/DataCorrection', this.form.value)
.toPromise()
.then(res => {
result = res;
console.log('Res ' + res);
});
并尝试在UI中显示
例
<div>{{result|json}}</div>
这将以json格式显示结果
注意:使用ngFor根据输出格式在表格中显示结果
您正在执行跨域请求,因为您的api和Angular应用程序正在不同的端口上提供。您可以添加一个cors标头来接受api上的所有域(不推荐),也可以设置proxy.config.json文件,以便将api调用重定向到与Angular应用程序相同的端口。
{
"/api/*": {
"target": "http://localhost:5000/api/",
"pathRewrite": {
"^/api": ""
},
"changeOrigin": true,
"secure": false,
"logLevel": "debug"
}
}
在你的Angular中使用/ api / DataCorrection / DataCorrection而不是http://localhost:5000/api/DataCorrection/DataCorrection
然后服务
ng serve --proxy-config proxy.config.json