源代码:
import {Component, OnInit } from '@angular/core';import {FormControl } from '@angular/forms';import {HttpClient } from '@angular/common/http';const ENDPOINT = "http://localhost:3000/echo?data=";@Component({selector: 'jerryform',template: `<input type="text" [formControl]="favoriteColorControl">`})export class ReactFormComponent implements OnInit {constructor(private http:HttpClient){}ngOnInit(): void {this.favoriteColorControl.valueChanges.subscribe((value) =>{console.log('new value: ' + value);this.http.get('http://localhost:3000/angular/' + value).subscribe((response)=>console.log('response from http: ' + response),(error)=>console.log('error: ' + error));})}favoriteColorControl = new FormControl('');}
nodejs实现的后台API代码:
app.route('/angular/*').get(function(req, res){var sResponse = 'Hello World';var oResponse = {"success:":"ok"};setTimeout( ()=>res.send(sResponse), 1000);});
测试发现,这个HTTP请求在Chrome开发者工具里标注为成功:
然后我Angular代码里触发的是error handler,而不是期望中的success handler:
从错误明细能看出,Angular期望API返回的response是json结构:Unexpected token H in JSON at position 0
观察HTTP请求头部字段里的Accept:application/json:
返回一个json格式的response即可:
更多Jerry的原创文章,尽在:“汪子熙”: