Storybook Angular не может разрешить параметры в базовом классе
Я добавляю сборник рассказов в существующее приложение. Помимо нескольких болезненных проблем, которые остались позади, в основном это был успех, однако я столкнулся с новой проблемой. У меня есть несколько компонентов, которые происходят от абстрактного базового класса, которые жалуются, что не могут разрешить параметры. НАПРИМЕР:Error: Can't resolve all parameters for MyComponent: (?, ?, ?, ?, ?, ?, ?)
У этого компонента нет конструктора, но у базового класса, который он расширяет, есть 7 параметров, которые соответствуют 7 знакам вопроса. Я предоставил классы для сборника рассказов, чтобы использовать их черезmoduleMetadata
, который работал для других компонентов, у которых есть собственный конструктор, но не работает для них.
Если бы у меня был поддельный конструктор, чтобы просто передать параметры в super(), он тогда работал бы, но я не хочу добавлять этот бессмысленный конструктор для всех таких компонентов.
Ниже приведен очень урезанный пример кода.
Файл истории:
export default {
title: 'My Stories',
component: MyComponent,
decorators: [
withKnobs,
moduleMetadata({
imports: [
// Import some modules needed here
],
providers: [
// I pass in all my services here, these are the 7 params needed for the component's base class
],
declarations: [
// Required child components are here
],
}),
],
};
export const ComponentStory = () => ({
component: MyComponent,
props: {},
});
Компонентный файл:
@Component({
selector: 'app-my-component',
templateUrl: './my.component.html',
styleUrls: ['./my.component.scss'],
})
export class MyComponent extends BaseComponent {
//Implementation here - No constructor
}
Файл базового компонента:
export abstract class BaseComponent implements OnInit, OnDestroy {
constructor(
protected firstService: FirstService,
protected router: Router,
protected ngProgress: NgProgress,
protected secondService: SecondService,
protected thirdService: ThirdService,
protected forthService: ForthService,
public fifthService: FifthService
) {
// Some other code here
}
// Implementation...
}
С вышесказанным я получаю сообщение об ошибке в отношении неразрешенных параметров. Однако если я добавлю следующее в файл компонента, он будет работать нормально и монтировать компонент в сборник рассказов, как ожидалось:
constructor(
protected firstService: FirstService,
protected router: Router,
protected ngProgress: NgProgress,
protected secondService: SecondService,
protected thirdService: ThirdService,
protected forthService: ForthService,
public fifthService: FifthService
) {
super(
firstService,
router,
ngProgress,
secondService,
thirdService,
forthService,
fifthService
);
}
Однако, как вы понимаете, я не хочу добавлять бессмысленный конструктор ко всем этим компонентам, которые расширяют этот базовый класс без собственного конструктора, просто ради сборника рассказов.
Может ли кто-нибудь подсказать, что еще я мог бы попробовать или чего мне не хватало? Большое спасибо.
tl:dr Компонент в сборнике рассказов не может разрешить параметры для абстрактного базового класса, если я не добавлю конструктор в компонент и не передам эти значения в super(), что делать?