Можно ли получить идентификатор экземпляра для службы?

Я использую сервис для нескольких компонентов, каждый из которых предоставляется компоненту в своем массиве провайдеров.

Мне любопытно посмотреть, какие компоненты используют какие экземпляры службы, так как я провожу некоторые эксперименты, которые включают их передачу.

Есть ли какой-нибудь встроенный способ доступа к идентификатору созданного экземпляра службы? Например, что бы заменить ?? в фрагменте кода ниже?

@Component({
    selector: 'app-component1',
    templateUrl: './component1.component.html',
    providers: [SearchService]
})
export class Component1 {

    constructor(
        public searchService: SearchService,
    ) {
        console.log('The instance Id of searchService is...' + '??');
    }

1 ответ

Решение

Не существует функции внедрения зависимостей для запроса идентификатора экземпляра ссылки. Некоторые DI-фреймворки имеют эту функцию, а Angular - нет.

Поэтому я использую статический счетчик.

constructor(public searchService: SearchService) {
    console.log('The instance Id of searchService is...' + searchService.id);
}

@Injectable()
export class SearchService {
     private static nextId: number = 0;
     public id: number;
     constructor() {
         this.id = SearchService.nextId++;
     }
}

Было бы неплохо, если бы Angular помечал службы this._id$ уникальная ценность или что-то для нас. Я уверен, что это будет где-то одна строка кода.

Другие вопросы по тегам