【发布时间】:2019-11-14 01:00:02
【问题描述】:
我想使用 Storybook 开发和测试我的 UI 组件,并将它们作为 npm 库从同一个项目中发布。这就是我将所有组件封装为单个功能模块的原因。我想创建一个简单的模块来生成一个表单并允许一些撤消功能。我的问题是 Storybook 无法将 Formbuilder 服务注入到我的组件中。
我的设置如下:
故事:
storiesOf('UndoForm', module)
.addDecorator(
moduleMetadata({
imports: [ReactiveFormsModule, UndoFormModule]
}),
)
.add('Testform', () => ({
template: '<mods-undo-form></mods-undo-form>'
})
);
UndoFormModule:
@NgModule({
declarations: [UndoFormComponent],
imports: [ReactiveFormsModule],
exports: [UndoFormComponent]
})
export class UndoFormModule {}
UndoFormComponent:
@Component({
selector: 'mods-undo-form',
templateUrl: './undo-form.component.html',
styleUrls: ['./undo-form.component.scss']
})
export class UndoFormComponent implements OnInit {
[...]
constructor(private fb: FormBuilder) { }
[...]
}
我得到的错误是:
无法解析 UndoFormComponent 的所有参数:(?)。
我发现,当我明确使用 @Inject 注释时,代码就可以工作了:
constructor(@Inject(FormBuilder) private fb: FormBuilder) { }
有没有可能阻止显式注释的使用?
【问题讨论】:
-
我遇到了完全相同的问题。首先,我认为问题在于我确实有 Angular Elements。然而它不是