Я учусь использовать Subject из rxjs для отправки строки на сервер.Я утешаю строку из внешнего интерфейса, и она печатает ожидаемую строку.Когда я смотрю в net core2.1, он отправляется как null, а не как строка.
Это ошибка в окне googlechrome dev "2: 65418 / api / stock: 1 POST http://localhost:65418/api/stock 500 (Internal Server Error)"
Вот код компонента вФайл stock.component.ts:
post(stock){
this.api.postStock(stock);
console.log("this is the stock I posted", stock);
}
Это код API службы API:
import { Injectable } from '@angular/core'
import { HttpClient, HttpHeaders } from '@angular/common/http'
import { Subject} from 'rxjs'
import { Cagr } from '../_models/cagr'
import { environment } from '../environments/environment'
const headers = new HttpHeaders({'Content-Type':'application/json; charset=utf-8'});
@Injectable({
providedIn: 'root'
})
export class ApiService {
apiURL = environment.apiUrl;
stockUrl = this.apiURL + '/api/stock';
private icarg = new Subject<Cagr[]>();
Icagr$ = this.icarg.asObservable();
constructor(private http: HttpClient) { }
postStock (stocks) {
this.http.post(this.stockUrl, stocks, {headers:
headers}).subscribe(res => {
console.log("POST call successful value returned in body", res);
},
response => {
console.log("POST call in error", response);
})
}
Это HTML-код компонента:
<mat-card>
<mat-card-content>
<form class="example-form">
<mat-form-field >
<input [(ngModel)]="stock" name = "stock" matInput placeholder="Input stock symbol" >
</mat-form-field>
</form>
</mat-card-content>
<mat-card-actions>
<button (click)="post(stock)" mat-raised-button color="primary">Go</button>
<div>
Этоэто внутренняя область, в которой я ожидаю увидеть строку, но она равна нулю:
[HttpPost]
public async Task<IActionResult> Post([FromBody]Models.Stock stock)
{
_context.Stocks.Add(stock);
await _context.SaveChangesAsync();
return Ok(stock);
}