Пространство имен / идентификатор экземпляра компонента, который можно использовать в шаблонах

#angular

#angular

Вопрос:

Я понимаю, как использовать ElementRef и что следует избегать установки идентификаторов элементов, но все еще бывают ситуации, когда вы хотите установить атрибут id элемента.

Например, с входными данными и метками (невозможно вложить из-за стороннего CSS):

 <input [attr.id]="'myinput' instanceId" />
<label = [attr.for]="'myinput' instanceId">My Label</label>
  

Я только что увеличил такое число для простоты:

 let numInstances = 0;

@Component({

})
export class MyComponent {

  private instanceId: number;

  constructor(){
    this.instanceId = numInstances  ;
  }
}
  

Но мне было интересно, есть ли пространство имен экземпляра компонента, которое я могу использовать в шаблонах вместо этого. Что-то вроде этого? Angular2 заменит # уникальной строкой для экземпляра компонента.

 <input [attr.id]="#myinput" />
<label = [attr.for]="#myinput">My Label</label>
  

Если этого не существует, как вы думаете, я должен сделать запрос функции команде Angular2?

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

1. вы ищете имя компонента??? вы хотите получить имя компонента из кода?

2. @micronyks Нет, идентификатор, уникальный для экземпляра компонента. Мне все равно, как это выглядит, если символы допустимы для атрибута HTML id.

3. Привет, вы нашли решение для этого?

4. @AravindanVe Нет, хотя я просто искал angular.io и нашел: ComponentRef Еще не смотрел на него, но, может быть, hostId находится в одном из этих полей? Хотя это не является частью общедоступного API. В общем, мне это редко нужно, но я все же думаю, что было бы неплохо, если бы Angular каким-то образом предоставил это.

Ответ №1:

После прочтения некоторых обсуждений в Интернете я решил использовать метод Lodash, предложенный в https://github.com/angular/angular/issues/5145#issuecomment-256354115

Это работает для меня, надеюсь, это поможет кому-то еще!