선택기와 다른 HTML 태그로 Angular 구성 요소를 만드는 방법 🏷
8901 단어 angular
@Component
데코레이터에 정의된 속성selector을 사용할 수 있습니다. 또는 Angular API(예: createComponent()
또는 ComponentFactory.create()
)를 통해 구성 요소를 동적으로 생성하려는 경우 사용자 지정 호스트 DOM 요소를 매개 변수로 전달할 수 있습니다.정적으로 구성 요소 만들기
TLDR: stackblitz: creating a component statically with a custom HTML tag을 참조하십시오.
"요소 선택기"대신 "속성selector"을 사용하여 구성 요소를 정의합니다.
@Component({
// Note the brakets around `my-component`, denoting an "attribute selector" instead of "element selector"
selector: '[my-component]'
/* ... */
})
export class MyComponent { /* ... */ }
그런 다음 속성으로 참조하여 사용자 지정 HTML 태그로 이 구성 요소를 생성합니다.
<article my-component></article>
구성 요소를 동적으로 생성
TLDR: stackblitz: creating a component dynamically with a custom HTML tag을 참조하십시오.
여기서 선택자는 중요하지 않습니다. 정상일 수도 있습니다.
@Component({
selector: 'my-component'
/* ... */
})
export class MyComponent { /* ... */ }
그런 다음 기존 DOM 요소를 동적으로 구성요소를 생성하기 위한 함수의 호스트로 전달합니다(예:
createComponent()
에서 @angular/core
로):@Component(/*...*/)
export class ParentComponent {
constructor(
protected injector: Injector,
protected environmentInjector: EnvironmentInjector,
protected viewContainerRef: ViewContainerRef
) {}
ngOnInit() {
// create a fresh element, detached from DOM
const hostElement = document.createElement('article');
// create MyComponent, passing the `hostElement` param
const component = createComponent(MyComponent, {
hostElement, // <-----------------------------------
environmentInjector: this.environmentInjector,
elementInjector: this.injector,
});
// insert this component into the `ViewContainerRef` of the parent component
this.viewContainerRef.insert(component.hostView);
}
참고: The function
createComponent()
은 Angular 14.2에만 추가되었습니다(CHANGELOG 참조). 동일한 기능을 ComponentFactory
에서도 사용할 수 있습니다(작성 당시에는 deprecated).ComponentFactory
와 유사한 사용 예를 참조하십시오.constructor(
protected injector: Injector,
protected componentFactoryResolver: ComponentFactoryResolver,
protected viewContainerRef: ViewContainerRef
) {}
ngOnInit() {
// create a fresh element, detached from DOM
const hostElement = document.createElement('article');
const componentFactory =
this.componentFactoryResolver.resolveComponentFactory(HelloComponent);
// create MyComponent, passing the `hostElement` param
const component = componentFactory.create(
this.injector,
undefined,
hostElement // <-----------------------------------
);
this.viewContainerRef.insert(component.hostView);
}
여기에서 working example on stackblitz using
ComponentFactory
도 찾을 수 있습니다.
Reference
이 문제에 관하여(선택기와 다른 HTML 태그로 Angular 구성 요소를 만드는 방법 🏷), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/krisplatis/how-to-create-an-angular-component-with-a-different-html-tag-than-the-selector-3848텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)