私はstoriesOf
を使用して5.2より前のストーリーブックから来ているので、コンポーネントをラップする場合はテンプレートを使用します。
例えば
.add('Test', () => ({
component: TestComponent,
template: `
<div class="wrapper">
<test-component></test-component>...
5.2では、ストーリーを書くための推奨される方法が変更され、デコレータを使用して同じ結果を達成する方法が説明されています https://storybook.js.org/docs/basics/writing-stories/#decorators 。しかし、私はangularを使用していて、反応とvueの例しかありません。どちらも特定の関数/コンポーネントを使用しているため、解決策を見つけるのに苦労しています。
Vueプロジェクトでは、Reactプロジェクトで使用される関数パラメータ
storyFn
の代わりに、特別なコンポーネント<story/>
を使用する必要があります
古い仕様のようにtemplate
を使用して、私は以下を試しました
template
が機能する最初のテストとしてexport const Test = () => ({
component: TestComponent,
template: `Expecting just this text`
});
結果:「このテキストのみを期待しています」というテキストを参照
<TestComponent>
の使用export const Test = () => ({ component: TestComponent,
template: <div class="wrapper"><TestComponent></TestComponent></div>
});
結果:空白の画面にTemplate parse errors: 'CheckboxComponent' is not a known element:
が表示され、 `スキーマ:[CUSTOM_ELEMENTS_SCHEMA]の使用が提案されます
<test-component>
の使用export const Test = () => ({
component: TestComponent,
template: `<div class="wrapper"><test-component></test-component></div>`
});
結果:空白の画面にスキーマの使用を提案するTemplate parse errors: 'CheckboxComponent' is not a known element:
が表示されます:[CUSTOM_ELEMENTS_SCHEMA]
2と3の両方に追加してみました
export const Test = () => ({
component: TestComponent,
addDecorator: moduleMetadata({
schemas: [CUSTOM_ELEMENTS_SCHEMA]
}),
template: `[tried both templates from 2 & 3]`
});
結果:同じエラーが再び表示された
TypeScriptでこれがどのように行われるか、そしてどこが間違っているのかについて誰かが光を当てることができますか?.
新しいストーリー形式で5.2でそれを行う方法を見つけました。 Template parse errors
を追加してコンポーネントを宣言することにより、[CUSTOM_ELEMENTS_SCHEMA]
を修正しました。
docs
addOn https://github.com/storybookjs/storybook/tree/master/addons/docs も使用しており、このための機能を追加しました。
StoriesOf https://storybook.js.org/docs/formats/storiesof-api/ とComponent Story Format(CSF) https://storybook.jsの両方を含めました.org/docs/formats/component-story-format / 他の誰かが問題に遭遇した場合。
storiesOf API
import { TestComponent } from './test.component';
import { storiesOf, moduleMetadata } from '@storybook/angular';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
storiesOf('Elements|Test', module)
.addParameters({ // only needed for docs add-on
component: TestComponent,
componentSubtitle: 'Subtitle'
// docs: { page: null } uncomment this to disabled docs
})
.addDecorator(
moduleMetadata({
imports: [CommonModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [TestComponent]
})
)
.add('Test', () => ({
component: TestComponent,
template: `<div class="test">test text<app-test></app-test></div>`
}));
CSF
import { TestComponent } from './test.component';
import { moduleMetadata, } from '@storybook/angular';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
export default {
title: 'Elements|Test',
component: TestComponent, // only needed for docs add-on
parameters: { // only needed for docs add-on
componentSubtitle: 'Subtitle.'
// docs: { page: null } uncomment this to disabled docs
},
decorators: [
moduleMetadata({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [TestComponent]
})
]
};
export const Test = () => ({
component: TestComponent,
template: `<div class="text">test text<app-test></app-test></div>`
});