你可能想要执行this.viewNodes
当请求返回一个值并且不执行结果时this.viewNodes()
This
this.structureRequest.sendRequest().subscribe( this.viewNodes());
应该改为
this.structureRequest.sendRequest().subscribe(() => this.viewNodes());
前者执行this.viewNodes()
并将结果传递给subscribe()
,后者创建一个新的内联函数,该函数被传递给subscribe()
。该内联函数在调用时执行this.viewNodes()
如果你想传递值sendRequest()
返回应该是
this.structureRequest.sendRequest().subscribe((result) => this.viewNodes(result));
update
sendReqeust()
不返回任何内容。
它应该是
return this.http.get(this.myUrl, options) ...
但这仅适用于您在代码中使用它的方式,如果它返回一个Observable
.
but the subscribe()
最后返回一个Subscription
return this.http.get(this.myUrl, options)
.map((res: Response) => res.json())
.subscribe(res => {this.result = res;
return this.result; });
因此这应该改为
return this.http.get(this.myUrl, options)
.map((res: Response) => res.json())
.map(res => {
this.result = res;
return this.result;
});
or
return this.http.get(this.myUrl, options)
.map((res: Response) => res.json())
.do(res => {
this.result = res;
});
不同之处在于do()
不会修改流的值,也不需要返回任何内容。返回值来自.map()
将被转发。确保do
是导入的(比如map
)如果你想使用它。