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(), что делать?

0 ответов

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