Angular 2 - Инъекция зависимостей и бочка

У меня была проблема с Dependency Injection при импорте службы из бочки (https://angular.io/docs/ts/latest/glossary.html#!#barrel).

Проблема, с которой я столкнулся, заключается в следующем:

Используя рекомендации Angular, в приложении есть основной ствол, а затем ствол для каждой папки, это достигается наличием index.ts в каждой папке. Ядро index.ts ссылается на все из каждой папки, и, в свою очередь, каждая папка ссылается на конкретные файлы.

основной index.ts

...
export * from './test/index';

тест index.ts

...
export * from './my-service.service';

Код

import { MyService } from '../../core';
...

@Injectable()
export class AuthGuard implements CanActivate {
    isValidSession: boolean = false;
    errorMessage: any;

    constructor(
        private myService: MyService
    ) { }

    canActivate(
        // Not using but worth knowing about
        next: ActivatedRouteSnapshot,
        state: RouterStateSnapshot
    ) {
        return this.myService.doSomething();
    }
}

Приведенный выше код привел к следующей ошибке:

Uncaught Cannot resolve all parameters for 'AuthGuard'(undefined). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'AuthGuard' is decorated with Injectable.

Глядя на код, я не нашел проблем с отсутствием@Injectable аннотаций. Фактически, тот же сервис использовался в других компонентах и ​​был импортирован с использованием core index.ts.

статья Я нашел предположил, что@Inject в конструкторе следует использовать, потому что иногда при преобразовании TypeScript в JavaScript метаданные не создаются. Это не решило проблему в моем случае. Попробовав несколько вещей, я просто попытался изменить импорт, чтобы получить сервис, как показано ниже, и ошибка не была выдана.

Успешный импорт:

import { MyService } from '../../core/test/my-service.service';

или же

import { MyService } from '../../core/test';

Я не уверен, есть ли проблема в файлах index.ts в моем приложении или, возможно, сама файловая структура неправильна, но из того, что я вижу, они работают нормально. Хотелось бы узнать, почему именно этотimport имеет значение.

Ответы на вопрос(2)

Ваш ответ на вопрос