大佬教程收集整理的这篇文章主要介绍了订阅Angular 2,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
> HomeComponent.ts
import {Component} from '@angular/core'; import {ObservablE} from 'rxjs/Observable'; import {StructurerequestservicE} from './Structurerequestservice'; export class Content { ok: Boolean; content = []; } @Component({ providers: [Structurerequestservice],styleUrls: ['app/home/home.css'],templateUrl:'./app/home/homePageTemplate.html' }) export class HomeComponent { contentArray = []; myRes: Content; showAssigned:Boolean = false; showSubitems:Boolean = false; showUsers:Boolean = false; constructor(private structurerequest: StructurerequestservicE) {} ngOnInit() { this.structurerequest.sendrequest().subscribe( this.viewNodes()); } viewNodes() { this.myRes = this.structurerequest.result; this.contentArray = this.myRes.content; this.showAssigned = true; } }
2.这是http服务,http get工作正常,收到的所有数据:
import {InjectablE} from '@angular/core'; import {http,Response,Headers,requestOptions} from '@angular/http'; import {ObservablE} from 'rxjs/Observable'; @Injectable () export class Structurerequestservice { result: Object; //private myUrl = 'http://mAnny.herokuapp.com/audit/get/structure'; private myUrl = './app/home/nodes.json'; // local URL to structure APi constructor (private http: http) { //use XHR object let _build = (<any> http)._BACkend._browserXHR.build; (<any> http)._BACkend._browserXHR.build = () => { let _xhr = _build(); _xhr.withCredentials = true; return _xhr; }; } sendrequest() { let body = JSON.Stringify({}); let headers = new Headers({ 'Content-Type': 'application/json'}); let options = new requestOptions({ headers: headers }); this.http.get(this.myUrl,options) .map((res: ResponsE) => res.json()) .subscribe(res => {this.result = res; return this.result; }); } }
3.问题是制定同步步骤:接收数据,而不是查看数据.
这个
this.structurerequest.sendrequest().subscribe( this.viewNodes());
应改为
this.structurerequest.sendrequest().subscribe(() => this.viewNodes());
前者执行this.viewNodes()并将结果传递给subscribe(),后者创建一个新的内联函数,该函数传递给subscribe().调用此内联函数时,执行this.viewNodes()
this.structurerequest.sendrequest().subscribe((result) => this.viewNodes(result));
更新
sendReqeust()不返回任何内容.
它应该是
return this.http.get(this.myUrl,options) ...
但是这只能在你的代码中使用它的方式,如果它返回一个Observable.
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; });
要么
return this.http.get(this.myUrl,options) .map((res: ResponsE) => res.json()) .do(res => { this.result = res; });
不同之处在于do()不会修改流的值,也不需要返回任何内容.从.map()返回的值将被转发.如果要使用,请确保导入do(如map).
以上是大佬教程为你收集整理的订阅Angular 2全部内容,希望文章能够帮你解决订阅Angular 2所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。