Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度2中的数据绑定和观测值_Angular_Typescript_Angular2 Observables - Fatal编程技术网

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*/})
检查一个可观察的教程,如。。。