使用angular4 http客户端从服务器获取数据但是收到错误
Type 'Observable<Observable<Object>>' is not assignable to type
'Observable<boolean>'.
在http请求中我有
saveCredit(data): Observable<boolean> {
return this._http.post(this.authurl + 'auth/save-credit', data)
.map((res) => {
return Observable.of(res);
}, (err) => {
return Observable.of(false)
});
}
在save之后在服务器上返回true或false。我需要做什么,以便我可以通过
简单地使用上述方法this._acceeService.saveCredit(data).subscribe((res)=>{
...do my stuff here
})
答案 0 :(得分:2)
this._http.post()
已经返回一个observable,因此,对于这个函数,你必须返回一个布尔值来获得一个可观察的布尔值。
尝试类似的东西:
saveCredit(data): Observable<boolean> {
return this._http.post(this.authurl + 'auth/save-credit', data).map(
res => !!res,
err => false
);
}
答案 1 :(得分:0)
您正在观察者中返回一个可观察者。
您可以返回第一个observable而不在其中创建另一个observable。并使用catch运算符进行错误处理。
//Execute in a firefox inspect console
var p = new XSLTProcessor();
var toTransform = document.implementation.createDocument(null, "CONTEXTO");
var parser = new DOMParser();
var xmlString = `<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1"/>
<xsl:template match="/">
<script></script>
<xsl:apply-templates select="CONTEXTO"/>
</xsl:template>
<xsl:template match="CONTEXTO">
<html>
<body>
Hello
</body>
</html>
</xsl:template>
</xsl:stylesheet>
`;
p.importStylesheet(parser.parseFromString(xmlString, "text/xml"));
var doc = p.transformToDocument(toTransform);
console.log(doc.getRootNode().children[0].outerHTML);
或如果你想在另一个内部使用一个Observable,只需使用flatMap运算符
saveCredit(data): Observable<boolean> {
return this._http.post(this.authurl + 'auth/save-credit', `enter code here`data).catch(this.handleError)
}
public handleError = (error: Response) => {
// Do messaging and error handling here
return Observable.throw(error)
}