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

Ada*_*ski 9 angular storybook angular-storybook

routerLink由于错误,无法为使用的模块配置故事

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

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

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

附加上下文 最新版本的 storybook5.3.3和 angular~8.2.14 我正在使用不同的配置 5.2.8,这个问题没有出现。

这个模块怎么配置,storybook有问题吗?

故事书问题

Ada*_*ski 8

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

故事配置看起来像这样

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

Run Code Online (Sandbox Code Playgroud)

而且你不需要路由配置 xD

  • 这为所需的指令提供了模拟,并且由于故事书的工作原理,它仅用于演示,因此不需要完整的 RouterModule (2认同)

Lin*_* Vu 5

我做了以下更改:

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

导航栏.module.ts

const routes: Routes = [];


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

之后,您只需<router-outlet></router-outlet>要将NavbarComponent