Ошибка Angular 2 * ngFor: не удается привязать к ‘menuitemtype’, поскольку это неизвестное свойство ‘div’

#angular #angular2-template #ngfor

#угловой #angular2-template #ngfor

Вопрос:

Я создал атрибут с именем data-menuitemtype , который я использую div внутри *ngFor цикла. Раньше у меня никогда не было проблем с созданием подобных атрибутов, потому что это совершенно корректный синтаксис HTML5, но по какой-то причине *ngFor циклам это не нравится, и они выдают мне следующую ошибку:

«Не удается выполнить привязку к «menuitemtype», поскольку это неизвестное свойство «div»».

Если я изменю его на id «работает», но тогда у меня будет куча идентификаторов с одинаковым значением, что, очевидно, не идеально. Как я могу использовать созданные атрибуты в *ngFor цикле, не вызывая ошибок? Возможно ли это?

Вот мой html:

 <div *ngFor="let variety of varieties">
    <div class="varietyTypeName menu-item-type-header" data-menuitemtype="{{variety.VarietyTypeName}}">
        {{variety.VarietyTypeName}}
        <i class="fa fa-angle-down arrow-toggle"></i>
    </div>    
</div>
  

Ответ №1:

Из того, что я вижу, data-menuitemtype это не свойство, а атрибут, и поэтому вы должны использовать [attr.insertYourAttributeHere] в своем коде, например:

 <div *ngFor="let variety of varieties">
    <div class="varietyTypeName menu-item-type-header" [attr.data-menuitemtype]="variety.VarietyTypeName">
        {{variety.VarietyTypeName}}
        <i class="fa fa-angle-down arrow-toggle"></i>
    </div>    
</div>
  

Или, если вы предпочитаете интерполяцию:

 <div *ngFor="let variety of varieties">
    <div class="varietyTypeName menu-item-type-header" attr.data-menuitemtype="{{variety.VarietyTypeName}}">
        {{variety.VarietyTypeName}}
        <i class="fa fa-angle-down arrow-toggle"></i>
    </div>    
</div>
  

Для получения дополнительной информации о различиях между атрибутами и свойствами проверьте синтаксис шаблона Angular 2.

Комментарии:

1. У меня это не сработало. Если я это сделаю, это всегда будет data-menuitemtype=»variety.VarietyTypeName», если я не делаю что-то неправильно. Я хочу, чтобы это было независимо от значения variety.VarietyTypeName .

2. @Brett Другая ошибка, которую я потенциально вижу, заключается в том, что data-menuitemtype это атрибут, а не свойство, и поэтому вы должны использовать attr.data-menuitemtype . Я отредактировал свой пост, проверьте его.

3. Ну вот. Изменение data-menuitemtype на attr.data-menuitemtype сделало свое дело. Спасибо!