我有一个服务器端渲染的应用程序(带有过渡),并且我有一个404页面,该页面已放置在一个惰性模块中(因此我不会增加已加载的Javascript大小)。
这工作正常,但是在客户端接管时有些闪烁,我认为这是由于在主块完成加载后加载了JS块。
鉴于此页面仅包含静态链接和一个routerLink
,根本不需要客户端,我想知道是否有办法在某些URL上禁用客户端
编辑:如我试图有条件地引导应用程序的注释中所建议。我不能使用URL作为条件,因为服务器在不存在的URL上响应404(此时没有重定向)。因此,最适合使用的是TransferState
,它是我在服务器端成功设置的,它在结束body
标记之前会生成一些输出。
不幸的是,我没有找到任何方法来正确实例化TransferState
中的main.ts
,因为它应该通过BrowserTransferStateModule
导入,并且我看不到在Angular模块中导入Angular模块的方法。 main.ts
文件。
我试图直接使用initTransferState
函数实例化它,但是由于我遇到错误,它似乎不适合在模块外部使用:
ERROR in ./src/main.ts
Module not found: Error: Can't resolve '@angular/platform-browser/src/browser/transfer_state' in 'G:\Documents\Projets\Myapp\Sources\master\frontend\src'
除了进行一些肮脏的反序列化之外,还有其他想法吗?
答案 0 :(得分:0)
我认为这就是您想要的:
import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
export class MyComponent implements OnInit{
constructor(@Inject(PLATFORM_ID) private platform: any) { }
ngOnInit() {
if (isPlatformBrowser(this.platform)) {
// use clientside stuff
}
}
}