【发布时间】:2018-09-04 23:48:41
【问题描述】:
我正在编写一个 Angular 2 图书搜索应用程序,它通过应用程序的服务与 API 进行交互。我有一个表单供用户将书籍上传到后端的数据库,在提交时运行uploadBook 函数:
uploadBook(){
//collects form data and uses it to set the value of this.book
this._uploadService.uploadBookToDb(this.book)
.subscribe( res => {
alert('book uploaded');
})
}
在upload.service.ts:
uploadBookToDb(book){
return this._http.post(environment.apiUrl + '/book_new', JSON.stringify(book))
.map(res => res.json());
}
这工作正常,我像往常一样从服务器收到响应。但是,当我尝试在用户键入时进行图书查找时遇到了麻烦:
bookTitle.valueChanges
.debounceTime(1000)
.map(bookTitle => this._uploadService.bookLookUp(bookTitle))
.subscribe(res => update dropdown with results);
在服务中bookLookup 类似于上面的工作uploadBookToDb:
bookLookUp(title){
return this._http.post(environment.apiUrl + '/book_lookup', JSON.stringify(title))
.map(res => res.json());
}
但是,当我在书名字段中输入时,会返回 observable 本身:Observable {_isScalar: false, source: Observable, operator: MapOperator}。服务器上没有记录任何活动,即根本没有执行服务中的 API 调用。
我确定我错误地将 observable 映射到服务,但在处理异步数据请求时如何正确执行此操作(例如 valueChanges)感到困惑。非常欢迎任何帮助解决这个问题。
【问题讨论】:
标签: angular angular2-observables