I built Angular component that uses ngbDatepicker
. The component (named DatepickerComponent
) imports following classes:
import { NgbDateStruct, NgbCalendar, NgbDatepickerI18n, NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap';
I want to display the component in Storybook by creating story datepicker.stories.ts
:
import { withPreview, previewTemplate, DEFAULT_ANGULAR_CODESANDBOX } from 'storybook-addon-preview';
import { moduleMetadata } from '@storybook/angular';
import { DatepickerComponent } from 'src/app/datepicker/datepicker.component';
import { NgbModule, NgbCalendar } from '@ng-bootstrap/ng-bootstrap';
export default {
title: 'Datepicker',
decorators: [
moduleMetadata({
declarations: [DatepickerComponent],
imports: [NgbModule, NgbCalendar]
}),
withPreview
]
};
export const Datepicker = () => ({
component: DatepickerComponent
});
Datepicker.story = { name: 'Datepicker' };
When I run storybook, I get this error message:
Unexpected value 'NgbCalendar' imported by the module 'DynamicModule'. Please add a @NgModule annotation.
How should I correctly import NgbCalendar
?
The same providers, that are defined in @Component
, have to be in moduleMetadata
in story as well:
export default {
title: 'Datepicker',
decorators: [
moduleMetadata({
declarations: [
DatepickerComponent
],
imports: [NgbModule],
providers: [
I18n,
{ provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
{ provide: NgbDateParserFormatter, useClass: CustomNgbDateParserFormatter }
]
})
]
};