Я использую Angular веб-компоненты в версии 8. Я хотел бы получить доступ к свойству компонента из индекса. html. Вот что у меня есть;
Есть компонент, у которого есть свойство с именем componentNames
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-component-name-provider',
templateUrl: './component-name-provider.component.html',
styleUrls: ['./component-name-provider.component.css']
})
export class ComponentNameProviderComponent implements OnInit {
public componentNames: string[] = [];
constructor() { }
ngOnInit() {
this.componentNames = ['name1', 'name2'];
}
}
У меня есть index. html, который я хотел бы получить свойство componentNames (упомянутое выше) отсюда.
<app-component-name-provider></app-component-name-provider>
<script>
const el = document.querySelector('app-component-name-provider');
el.componentNames // here I tried to perform but did not work, el is null
</script>
Я также удаляю app.module.ts, если он необходим;
import { Injector, NgModule } from '@angular/core';
import { createCustomElement } from '@angular/elements';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { ComponentNameProviderComponent } from './component-name-provider/component-name-provider.component';
@NgModule({
declarations: [
ComponentNameProviderComponent
],
imports: [
BrowserModule,
FormsModule
],
providers: [],
bootstrap: [],
entryComponents: [
ComponentNameProviderComponent
]
})
export class AppModule {
constructor(private injector: Injector) {
}
ngDoBootstrap() {
const componentNameProviderComponentCustomElement = createCustomElement(ComponentNameProviderComponent, { injector: this.injector });
customElements.define('app-component-name-provider', componentNameProviderComponentCustomElement);
}
}
Я пытался объясните, что я. Я ищу способ получить свойство componentNames из index. html. Как я пробовал выше, я не могу получить переменную, получив document.querySelector
Я знаю, что могу использовать декоратор @Output в эмиттере событий, но я не думаю, что это лучшая практика для этой цели.
Есть ли какое-нибудь решение по моему вопросу? Спасибо за помощь и вклад.