角度4的模板装订

时间:2017-05-18 09:55:02

标签: angular

以下是我的部分组件代码

....

....
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语句打印" {" name":" john"}"正如所料。 但{{ajaxdata?.name}}不打印" john" ,任何想法可能是什么原因?

3 个答案:

答案 0 :(得分: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....');
        }

    })

它应该可以解决您的问题。

答案 1 :(得分:0)

我认为是

{{ajaxdata.?name }}

答案 2 :(得分:0)

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

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

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

有关此内容的更多信息可以是found here