2017-01-05 3 views
2

Я загрузки с помощью службы, чтобы загрузить свои данные JSon на компоненте приложения.Угловое 2: self.context.data.style неопределен

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

); 

Когда я пытаюсь получить доступ к this.ui в компоненте шаблона для NgStyle, я получаю ошибку «Self.context.ui не определено». Это странно, потому что оно отображается в консоли, но как только я добавляю его на свой компонент, он волнуется.

Этот код в компоненте приложения, я пытаюсь иметь динамические стили из моей JSON

<h1 [NgStyle]="{'color': ui.colors.first}"> Random text </h1> 

Здесь структура JSON, это выглядит примерно так.

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

Я действительно не знаю, почему угловые не позволяют мне использовать данные, как вы думаете, что происходит здесь?

+1

Вы пробовали с помощью оператора безопасной нав? Как это:? 'Ui .colors .first' – echonax

+1

должно быть' [ngStyle] 'вместо' [NgStyle] ', а также. – Alex

+0

должно быть 'ui.style.colors.first' –

ответ

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, предположили, что вам, возможно, придется использовать безопасных операторов.

+0

Я попробовал безопасные операторы нав, и он работал отлично. Что такое безопасные операторы? Что они делают? Никогда раньше я не слышал о них. – LadyT

+1

@LadyT они основно 'if' проверки, чтобы понять, является ли объект' null' или 'undefined' – echonax

+2

@echonax Спасибо за разъяснение. – LadyT

Смежные вопросы