Как получить имя компонента из сервиса в Angular без использования частного API, такого как ссылка на контейнер - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужно имя компонента внутри сервиса, вызывающего метод в сервисе console.log (this.vcr ['_ view']. Component); console.log (this.vcr [ '_ вид'] component.constructor.name.);

1 Ответ

0 голосов
/ 17 апреля 2020

Демонстрационная ссылка 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 и получить имя текущего компонента из любого места в приложении. Надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...