Демонстрационная ссылка stackBlitz
В сервисе вам нужно установить свойство, которое используется для сохранения имени вашего компонента из имени класса вашего компонента. Таким образом, каждый компонент, который вам нужно классифицировать для установки имени свойства из службы, и в файле шаблона вызывать метод получения имени свойства из службы.
Другое дело, что с помощью constructor.name
вы не получите правильный экземпляр имени класса компонента в производство. Потому что во время сборки код запускается минимизированным, а большое имя класса преобразуется в маленькие имена. таким образом, вы не получите полное имя класса в рабочей версии кода. Для получения дополнительной ссылки go на эту ссылку моей ... Dev.to
службы. ts
@Injectable()
export class ComponentNameService {
_currentComponnetName: string = 'default';
get currentComponnetName(){
return this._currentComponnetName;
}
set currentComponnetName(name:string){
this._currentComponnetName = name;
}
}
app.component.ts
export class AppComponent {
setCurrentCmpName = "App-Component";
constructor(private componentService: ComponentNameService){}
ngOnInit(){
this.componentService.currentComponnetName = this.setCurrentCmpName;
}
}
app.component. html
<div class="name">
current Component Name is :
<h5> {{componentService.currentComponnetName}} </h5>
</div>
В каждом компоненте ngOnInit()
необходимо установить currentComponentName
и получить имя текущего компонента из любого места в приложении. Надеюсь, это сработает для вас.