#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
Это работает для меня, надеюсь, это поможет кому-то еще!