Angular 角度2中的数据绑定和观测值
首先让我说我是新来的 所以我创建了一个服务,它从响应头中获取一个变量。 代码如下:Angular 角度2中的数据绑定和观测值,angular,typescript,angular2-observables,Angular,Typescript,Angular2 Observables,首先让我说我是新来的 所以我创建了一个服务,它从响应头中获取一个变量。 代码如下: export class MyService{ constructor (private http: Http) {} public doThings(varA:string, varB:string){ let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions(
export class MyService{
constructor (private http: Http) {}
public doThings(varA:string, varB:string){
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions();
let data={
foo:{
thing1: varA,
thing2: varB
}
};
let body = JSON.stringify(data,null,2);
this.http.post("http://localhost:4000/foo", body , options)
.map((res)=> res.headers.get("foo"))
.subscribe((data)=> this.myValue = data);
}
public myValue = "";
}
组件A调用填充myValue的doThings函数:
...
export class AComponent {
constructor(private mySvc:MyService){}
vara;
varb;
onClick(){
this.mySvc.doThings(this.vara,this.varb);
}
}
应用程序组件监视myValue值,以便隐藏/显示模板中的某些内容
...
export class AppComponent {
constructor(private mySvc: MyService){}
val = this.mySvc.myValue;
}
问题是,在AppComponent中,即使在组件b调用doThings
我做错了什么
谢谢。
val=this.mySvc.myValue代码>只是一次性操作。执行此行时,服务器的响应尚未到达。当它最终到达时,此行将不再更新val
。您需要正确地链接异步调用。这里已经有大约200个类似的问题了。@GünterZöchbauer嗯,谢谢,现在它更清楚了,但我仍然不知道应该怎么做。使用map
而不是subscribe
并传递http.get(…)
上的可观察的。在需要结果的地方,使用可观察的.subscribe(val=>{/*dosomethingthevalue*/})
检查一个可观察的教程,如。。。