Angular 2:self.context.data.style未定义

时间:2017-01-05 18:15:16

标签: javascript json angular

我正在使用服务加载我的应用程序组件上的json数据。

this.data = this.dataService.getData()
 .subscribe(
    data => {
     this.data = data;
     this.ui = this.data.style;
    },
    err => console.error(err),
    () => console.log('Data loaded')

 );

当我尝试在NgStyle的模板组件中访问this.ui时,我收到错误" Self.context.ui未定义"。它很奇怪,因为它显示在控制台中,但是一旦我将它添加到我的组件上,它就会吓坏了。

这段代码在app组件中,我试图从我的json

获取动态样式
<h1 [NgStyle]="{'color': ui.colors.first}"> Random text </h1>

这是json结构,它看起来像这样。

{
 "style":{
   "colors": {
      "first": "#ffffff"
    }
  }
}

我真的不知道为什么角度不让我使用数据,您认为这里发生了什么?

1 个答案:

答案 0 :(得分:2)

您的self.context错误在此处:

this.data = this.dataService.getData() 

应该只是:

this.dataService.getData()
 .subscribe(
    data => {
     this.data = data;
     this.ui = this.data.style;
    },
    err => console.error(err),
    () => console.log('Data loaded')
 );

您要将数据分配到this.data内的this.data,这就是为什么它会抱怨self.context

[NgStyle]应为[ngStyle],并且像@echonax建议您可能必须使用安全运营商。