Унаследованные инъекции зависимостей Angular2 не определены для развернутой версии

У меня есть базовый класс компонентов:

export abstract class BaseListComponent<GenObject extends BaseObject> 
{

    constructor(
        @Inject(ActivatedRoute) protected readonly route: ActivatedRoute,
        @Inject(SpudService) protected readonly spud_service: SpudService,
    ) {
        console.log(this.route, this.spud_service);
    }

...
}

Это используется рядом классов, которые наследуются от этого, например:

@Component({
    selector: 'album_list',
    templateUrl: './base-list.component.html',
})
export class AlbumListComponent extends BaseListComponent<AlbumObject> 
{
    ...
}

Когда я запускаю этот код с помощью ng serve и тестирую, все работает отлично. Если я соберу код с помощью ng build и скопирую каталог dist на сервер Apache, конструктор будет вызван без двух обязательных аргументов. Вызов console.log() печатает undefined дважды. Затем это приводит к ожидаемым фатальным ошибкам, когда мой код пытается использовать эти службы, которые не были предоставлены.

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

Если в AlbumListComponent я определил конструктор со всеми необходимыми инжекторами, то он тоже отлично работает.

   constructor(
        @Inject(ActivatedRoute) route: ActivatedRoute,
        @Inject(SpudService) spud_service: SpudService,
    ) {
        super(route, spud_service);
        console.log(this.route, this.spud_service);
    }

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

В Chrome, если я устанавливаю точку останова в console.log в родительском классе и просматриваю трассировку стека, я вижу вызов функции, в котором параметры действительно не предоставляются:

function Wrapper_AlbumListComponent() {
  var self = this;
  self._changed = false;
  self._changes = {};
  self.context = new jit_AlbumListComponent0();
  self._expr_0 = jit_CD_INIT_VALUE1;
  self._expr_1 = jit_CD_INIT_VALUE1;
}

Есть идеи, где я ошибаюсь?

Полный код доступен.


person Penguin Brian    schedule 02.04.2017    source источник
comment
stackoverflow.com/a/42949015/1876949, github.com/angular/angular/issues/15004   -  person Sasxa    schedule 02.04.2017
comment
Первая ссылка, stackoverflow.com/a/42949015/1876949, представляет собой другую ситуацию, когда маршрутизатор поставляется, но не работает, как ожидалось. Здесь ни одна из служб, включая маршрутизатор, не предоставляется компоненту. Ссылка на github выглядит совершенно не связанной и даже не упоминает конструкторы компонентов.   -  person Penguin Brian    schedule 03.04.2017