Зависимости сценария углового типа не определены или класс не определен - PullRequest
0 голосов
/ 11 июня 2019

Я хочу добавить инъекцию в инъекцию, которая расширяет абстрактный класс. Но либо мои зависимости не определены, либо сам класс не определен. Класс работал нормально, прежде чем я добавил stepRouter, поэтому я предполагаю, что это проблема с этим классом где-то.

Сначала у меня возникла проблема, из-за которой мои зависимости были неопределенными и натыкались на https://github.com/angular/angular/issues/5155, и я увидел, что мне также нужно было классифицировать super. Но при вызове super сам класс остался неопределенным.

примечание: я удалил весь контент из классов и просто оставил все конструкторы и декораторы

Ошибка: ReferenceError: InstallationWizard не определен

Класс, который я пытаюсь использовать.

Если я удалю конструктор из этого класса, ошибка исчезнет, ​​но все свойства будут неопределенными.

@Injectable()
export class InstallationWizard extends Wizard {
    constructor(
        protected storage: Storage,
        protected toaster: Toaster,
        protected projectApi: ProjectApi,
        protected formApi: FormApi,
        public stepRouter: InstallationStepRouter
    ) {
        super(storage, toaster, projectApi, formApi, stepRouter)
    }
}

Абстрактный класс мастера

export abstract class Wizard {
    constructor(
        protected storage: Storage,
        protected toaster: Toaster,
        protected projectApi: ProjectApi,
        protected formApi: FormApi,
        public stepRouter: StepRouter
    ) {
        this.pictures = new Array<PictureInterface>();
    }
}

Шаг установки роутера

@Injectable()
export class InstallationStepRouter extends StepRouter {

}

Абстрактный класс, расширяемый

export abstract class StepRouter {
}

1 Ответ

0 голосов
/ 12 июня 2019

Использование @ угловой / основной инжектор

@Injectable()
export class InstallationWizard extends Wizard {
    constructor(
        protected injector: Injector
    ) {
        super(injector)
    }
}

export abstract class Wizard {
    protected stepRouter: StepRouter;

    constructor(injector: Injector
    ) {
        this.stepRouter = this.injector.get(StepRouter);
    }
}
...