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

gmn*_*gmn 5 single-page-application typescript .net-core angular ngx-charts

使用ASPNet Angular SPA模板我试图导入NGX-Charts,但它们不能与服务器端预渲染一起使用.所以我只想通过将NGX图表模块导入app.module.browser.ts来使它们渲染客户端.

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

无法绑定到'view',因为它不是'ngx-charts-advanced-pie-chart'的已知属性.

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

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

Est*_*ask 3

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

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

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

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

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