Если вы посмотрите на HttpClient
, это post
метод имеет подпись:
post(
url: string,
body: any,
options: {
headers?: HttpHeaders | { [header: string]: string | string[]; };
observe?: HttpObserve;
params... = {}
): Observable<any>
Так вот:
this.http.post("http://localhost:3000/api/books", headers, data)...
должно быть:
this.http.post("http://localhost:3000/api/books", data, { headers })...
Данные полезной нагрузки (body
) - это второй аргумент метода post
, а затем приходитoptions
, которые содержат такие вещи, как headers
ТАКЖЕ:
Просмотр предупреждений консоли выглядит так, как будто ваш Express Server блокирует запросы из-за политики CORS.
Вам также нужно включить CORS на вашем экспресс-сервере.Вот как
Установите CORS:
npm install cors --save
Затем на вашем Express Server:
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products/:id', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
ПРИМЕЧАНИЕ: Это всего лишь пример реализации иможет меняться в зависимости от вашей реализации.