Как передать строковое значение компоненту в angular2


86

Я хотел бы передать строковое значение компоненту в angular2, но оно не работает с привязкой по умолчанию. Я думаю о чем-то похожем на это:

<component [inputField]="string"></component>

К сожалению, в правой части задания разрешены только выражения. Есть ли способ сделать это?

Ответы:


174

Строковые литералы можно передавать по-разному:

<component inputField="string"></component>
<component [inputField]="'string'"></component>
<component inputField="{{'string'}}"></component>

1
Есть ли между ними разница? Например, будет ли Angular создавать «привязки» в последних двух случаях или это достаточно умно?
Александр Абакумов

Angular достаточно умен. В DOM будет виден только первый.
Günter Zöchbauer

1
Спасибо. Я проходил без вложенных кавычек, и он возвращал значение как NaN: <component [inputField]='string'></component>
Эрик Сойк,

Технически я бы не предлагал варианты 1 и 3. Они буквально будут включать эти атрибуты и значения в элементе компонента, а также любые элементы в компоненте, которые могут использовать эти значения. В примере id="example-id"передается правильная желаемая строка, однако теперь будет 2 элемента с одинаковым idатрибутом. Используйте этот подход с умом ...
mrtpain


3

Чтобы включить одинарную кавычку (и, возможно, другие специальные символы HTML) в строковый литерал, первый вариант работает, в то время как те, которые используют одинарные кавычки для переноса литерала, терпят неудачу с ошибками синтаксического анализа. Например:

<component inputField="John&#39;s Value"></component>

Правильно выведет "John's Value".

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.