2017-01-26 3 views
6

Я совершенно новый в Angular 2, и я хочу показать в своем шаблоне строку в переменной, которая должна содержать внутри другой переменной. Я покажу вам упрощенный пример того, что моя проблема и что я хочу добиться:Angular 2 - Отображать переменную внутри переменной в шаблоне


questionnaire.component.ts

/* Starts being "", populating an input text will modify this */ 
name = "Albert"; 

/* This variable comes from calling an API, here I just put it as created to simplify */ 
question.title = "Hello {{name}}, how old are you?"; 

questionnaire.template.html

<p>{{question.title}}</p> 

В результате я получаю:

Здравствуйте, {{name}}, сколько вам лет?

и мой желаемый результат будет:

Здравствуйте Альберт, сколько вам лет?

Я попытался спасаясь от «{{}}» в строке, хранящейся на моей БД, используется ASCII символ вместо фигурных скобок, положить его в [innerHTML] ... но результат всегда было одинаковым.

Вы знаете, как я могу это решить?

спасибо!

ответ

12

{{}} работает только в шаблонах угловых компонентов, а не в произвольных строках, а также не в HTML, динамически добавленном в DOM.

Просто измените его

question.title = `Hello ${this.name}, how old are you?`; 

использовать машинопись интерполяцию строки.

+0

Спасибо! Оно работало завораживающе. Я предполагаю, что это также сработает, если я получу объект «вопрос» из БД, вызывающего API напрямую, если поле «title» равно «Hello $ {this.name} ...', не так ли? – AMarquez94

+0

Извините, я не знаю, что это значит. Это зависит от того, где вы помещаете свой код и доступен ли 'this.name', откуда выполняется код, но в принципе это работает повсеместно в TS-коде. –

+1

Хорошо, не волнуйся, попробуй попробовать сам и посмотри, работает ли он в моем конкретном случае. Еще раз спасибо! – AMarquez94

1

В angular2 вы должны использовать это ключевое слово

Например, $ {} this.name