2017-05-18 116 views
0

结合下面是我的局部分量代码模板在角度4

.... 

.... 
ngOnInit() 
{ 

this.service.getData().subscribe(function(data) { 

    try 
    { 
     console.log(JSON.stringify(data)); // {"name":"john"} 
     this.ajaxdata = data; 
} 
catch(err) 
{ 
    console.log('Error Here....'); 
} 

     }); 
} 
.... 
.... 

和下面是我的部分模板相关的代码

{{ ajaxdata?.name }} 

在上述代码打印的console.log语句“{”名称” :“约翰”}“如预期。 但{{ajaxdata?.name}}不打印“john”,任何想法可能是什么原因?

+1

为什么会出现'''ajaxdata'后? –

+0

你可以给你的服务代码吗? – mcsekar

+1

@AgamBanga https://angular.io/docs/ts/latest/guide/template-syntax.html#!#safe-navigation-operator – mcsekar

回答

0

看起来你已经失去了this的背景。

在您的代码中,this当前未指向您的类实例ajaxdata。有几种方法可以解决这个问题。其中我认为最简单的方法是使用下面的箭头功能:本

this.service.getData() 
    .subscribe(data => this.ajaxdata = data) 

更多信息可以found here

0

我认为这是

{{ajaxdata.?name }} 
+1

https://angular.io/docs/ts/latest/guide/template-syntax.html#!#safe-navigation-operator – mcsekar

2

你已经失去this上下文。

解决方案如下附:

方法1:

this.service.getData().subscribe(function(data) { 
    try { 
     console.log(JSON.stringify(data)); // {"name":"john"} 
     this.ajaxdata = data; 
    } 
    catch(err) { 
     console.log('Error Here....'); 
    } 

}.bind(this)) 

方式2:

this.service.getData().subscribe((data) => { 
     try { 
      console.log(JSON.stringify(data)); // {"name":"john"} 
      this.ajaxdata = data; 
     } 
     catch(err) { 
      console.log('Error Here....'); 
     } 

    }) 

应该解决您的问题。