Связывание угловых атрибутов через attr.приводит к нулевым значениям при использовании @Attribute - PullRequest
0 голосов
/ 01 октября 2018

Если я использую в своем шаблоне угловой компонент, подобный этому:

<my-cmp selectable />

И мой компонент запрашивает в своем конструкторе следующее:

constructor(@Attribute("selectable") selectable: string){};

Тогда selectable будетпустая строка, как и ожидалось, но когда она используется следующим образом:

<my-cmp [attr.selectable]="true" />

Это правильно поместит атрибут в мой тег в DOM и приведет к следующему:

<my-cmp selectable="true" />

Но в этом случае selectable всегда будет иметь значение null, независимо от того, установлено ли оно на construct или ngOnInit и его заданного значения (например, false, "" или что-либо еще, также приведет к null).

Вопрос здесь: почему?И что еще более важно: как наилучшим образом использовать логические атрибуты в angular?

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

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете иметь некоторое представление о внутренностях, касающихся @Attribute decorator здесь :

Angular не читает значения атрибута во время выполнения, только во время компиляции, так как в противном случае мы быполучите производительность.

С синтаксисом <my-cmp [attr.selectable]="true" /> вы создаете привязку.Но значение атрибута будет установлено после первого цикла обнаружения изменений.Поэтому во время компиляции у вас не будет установлен атрибут, поэтому вы получите значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...