@Component
デコレータに渡すselector
にアクセスする方法を理解しようとしています。
例えば
@Component({
selector: 'my-component'
})
class MyComponent {
constructor() {
// I was hoping for something like the following but it doesn't exist
this.component.selector // my-component
}
}
最終的には、これを使用して属性data-tag-name="{this.component.selector}"
を自動的に追加するディレクティブを作成し、Seleniumクエリを使用してセレクターでangular要素を確実に見つけることができるようにします。
分度器を使用していません
ElementRef
を使用します:
import { Component, ElementRef } from '@angular/core'
@Component({
selector: 'my-component'
})
export class MyComponent {
constructor(elem: ElementRef) {
const tagName = elem.nativeElement.tagName.toLowerCase();
}
}
[〜#〜]時代遅れ[〜#〜]参照 https://stackoverflow.com/a/42579760/227299
コンポーネントに関連付けられたメタデータを取得する必要があります。
重要な注意AOTコンパイラを実行すると、注釈が削除されます このソリューションを事前にレンダリングすると無効になりますテンプレートのコンパイル
@Component({
selector: 'my-component'
})
class MyComponent {
constructor() {
// Access `MyComponent` without relying on its name
var annotations = Reflect.getMetadata('annotations', this.constructor);
var componentMetadata = annotations.find(annotation => {
return (annotation instanceof ComponentMetadata);
});
var selector = componentMetadata.selector // my-component
}
}