如何使用 RouterLink 为模块配置故事书故事

How to configure storybook story for module with RouterLink

由于错误

,无法为使用 routerLink 的模块配置故事

ERROR NullInjectorError: StaticInjectorError(DynamicModule)[RouterLinkActive -> Router]

重现 重现该行为的步骤: demo-app 运行 应用程序,您可以测试没有可能的解决方案来添加 RouterModule 来处理故事。 它不能配置为 RouterTestingModuleRouterModuleRouterModule.forRootiframe.html 路径。关于缺少提供者总是有同样的错误。

预期行为 使用 routerLink运行 应用程序和故事

其他上下文 最新版本的故事书 5.3.3 和 angular ~8.2.14 我正在使用不同的配置 5.2.8,但没有出现此问题。

如何配置这个模块,故事书有问题吗?

Storybook issue

我做了以下更改:

  1. 添加 RouterModule 包括路由数组(用于定义您的路由)
  2. 提供所需的 APP_BASE_HREF.

navbar.module.ts

const routes: Routes = [];


@NgModule({
  declarations: [NavbarComponent],
  imports: [
    CommonModule,
    RouterModule.forRoot(routes)
  ],
  providers: [{provide: APP_BASE_HREF, useValue: '/'}],
  exports: [NavbarComponent]
})
export class NavbarModule {
}

之后你只需要将 <router-outlet></router-outlet> 添加到你的 NavbarComponent

Storybook 的工作方式与 angular 不同,所以我不需要将 FeatureModule 注入到故事中,Component 就可以了。当只有NavbarComponent被注入RouterTestingModule

故事配置如下所示

storiesOf('Navbar', module)
  .addDecorator(
    moduleMetadata({
      imports: [BrowserAnimationsModule, RouterTestingModule],
      declarations: [NavbarComponent],
    }),
  )

而且你不需要路由配置 xD