仅在角度通用中将组件标记为客户端

时间:2017-10-13 10:53:21

标签: angular typescript .net-core single-page-application ngx-charts

使用ASPNet Angular SPA模板我尝试导入NGX-Charts,但他们不使用服务器端预渲染。因此,我只是通过将NGX图表模块导入app.module.browser.ts来尝试使它们渲染客户端。

但是,当我这样做时,我收到模板解析错误:

  

无法绑定到'查看'因为它不是  ngx-charts-advanced-pie-chart'的已知属性。

是否有正确的方法将组件标记为仅在浏览器中呈现?如果存在,这似乎没有得到很好的记录。

或者,是否有正确的方法在角度通用应用程序中引用NGX-Charts?

1 个答案:

答案 0 :(得分:3)

此问题适用于未针对服务器端呈现进行优化的任何第三方模块。

解决方法是从app.module.server.ts中排除模块并导入一个虚拟模块,而不是从原始模块中存根所有单元,或者至少是应用程序中当前使用的单元:

@Component({ selector: 'ngx-charts-advanced-pie-chart' })
class DummyAdvancedPieChartComponent {
  @Input('view') view;
}

如果正在使用的提供程序无法从原始模块导入,则它们也应该存根。

虚拟组件和指令的替代方法是使用custom schema。使用NO_ERRORS_SCHEMA是不可取的,因为它也会抑制有用的错误。