我通过单击前端上的“提交”按钮来触发一个名为upload()的函数。
在我的app.html中:
<div class="row" style="padding:10px;">
<button type="submit" class="btn btn-primary" style="margin-left:10px;" (click)="upload()">Submit</button>
</div>
在我的app.ts中:
upload() {
this.files = {
pdf_one: './server/test-pdfs/pdf-sample.pdf',
pdf_two: './server/test-pdfs/pdf-sample.pdf',
};
this.filesToUpload = [];
this.filesToUpload.push(this.files.pdf_one);
this.filesToUpload.push(this.files.pdf_two);
this.getMergedPDF(this.filesToUpload);
}
getMergedPDF(filesToUpload): Observable<string> {
return this.http.post<string>('http://localhost:8081/merge-pdf', JSON.stringify(filesToUpload));
}
我已经设置了断点,上面的函数就可以了。就在到达node.js端时,什么也不会触发。
这是我在nodejs端设置api端点的方法: server.js
app.post('/merge-pdf', (req, res) => {
this.fileList = req;
PDFMerge(this.fileList, {output: `${__dirname}/test-pdfs/merged-pdf.pdf`});
res.send(200);
});
const server = app.listen(8081, () => {
console.log('Listening on port %s...', server.address().port);
});
我想知道在未触发api端点的情况下我会怎么做?
编辑:
我已经尝试过:
getMergedPDF(filesToUpload): Observable<string> {
return this.http.post<string>('http://localhost:8081/merge-pdf', JSON.stringify(filesToUpload))
.subscribe(data => this.mergedUrl = data);
}
但是会发生此错误:
Type 'Subscription' is not assignable to type 'Observable<string>'.
Property '_isScalar' is missing in type 'Subscription'.'
答案 0 :(得分:5)
您需要订阅。可观察对象是惰性的,除非您订阅它,否则实际上不会执行POST调用。
this.http.post(...).subscribe(...)
您可以通过检查浏览器的“网络”选项卡来确保节点没有故障,并确保首先没有进行HTTP调用。