Angulay Flex布局自定义断点不适用于SSR

时间:2018-04-05 02:55:30

标签: angular serverside-rendering angular-flex-layout ssr

我在Angular Flex Layout中只需要两个断点。所以,我定义了:

const CUSTOM_BREAKPOINTS: BreakPoint[] = [{
  alias: 'lg',
  mediaQuery: '(min-width: 700px)',
}, {
  alias: 'sm',
  mediaQuery: '(max-width: 700px)',
}];

export function getCustomBreakpoints() {
  return CUSTOM_BREAKPOINTS;
}

@NgModule({
  providers: [{
    provide: BREAKPOINTS,
    useFactory: getCustomBreakpoints
  }]
})
export class AppModule { }

没有服务器端渲染,这可以正常工作。启用后,我的布局不再响应。这是我的项目:my GitHub repository。应用常规规则来构建并运行here

当我使用SSR运行这个项目时,我总是在中间区域获得三个中心行部分的布局布局,而不是将所有内容放在一列中。

没有我的自定义断点,Angular Flex Layout可以正常工作。

所以,我的问题,为什么我的实施不正确?

2 个答案:

答案 0 :(得分:0)

实际上,我的方法一般不适用于AOT。在看了Angular Flex Layout中的BREAKPOINTS token实现之后,我发现它使用BREAKPOINT令牌注入一个断点数组。所以,我提供了这个令牌:

{
    provide: BREAKPOINT,
    useValue: CUSTOM_BREAKPOINTS
}

然后,我看到他们将我的自定义数组与默认断点数组合并,除非禁用DISABLE_DEFAULT_BREAKPOINTS标记。所以,我禁用了它:

{
    provide: DISABLE_DEFAULT_BREAKPOINTS,
    useValue: true
}

在此之后,一切正常。查看commit了解详情。

答案 1 :(得分:0)

为@ angular / flex-layout库提供自定义断点似乎正在不断变化。这个git问题:

https://github.com/angular/flex-layout/issues/821

表示他们在新的重大更改完成后正在等待更新文档。

但是,显然有两种方法可以自定义断点,要么使用您提到的BREAKPOINTS令牌提供程序,要么将其作为参数传递给FlexLayoutModule:

FlexLayoutModule.withConfig({}, CUSTOM_BREAKPOINTS),

第二种方式对我来说是Angular 8和@ angular / flex-layout @ 8.0.0-beta.25

有关更多信息,请参见Wiki中的“配置”页面-https://github.com/angular/flex-layout/blob/master/guides/Configuration.md