如何有条件地禁用客户端



我有一个服务器端渲染的应用程序(带转换(,还有一个404页面,我把它放在了一个懒惰模块中(这样我就不会增加加载的Javascript大小(。

这很好,但当客户端接管时会有一些闪烁,我认为这是由于JS块在主块完成加载后加载。

考虑到这个页面只包含静态链接和一个routerLink,客户端根本不需要,我想知道是否有办法在某些URL上禁用客户端

编辑:正如评论中所建议的那样,我尝试有条件地引导应用程序。我不能使用URL作为条件,因为服务器在不存在的URL上响应404(此时没有重定向(。因此,最适合使用的是我在服务器端成功设置的TransferState,它在关闭body标签之前生成一些输出。

不幸的是,我没有找到任何方法在main.ts中正确实例化TransferState,因为它应该通过BrowserTransferStateModule导入,而且我看不到在main.ts文件中导入Angular模块的可能方法。

我试图用initTransferState函数直接实例化它,但它似乎不是为在模块外使用而设计的,因为我得到了一个错误:

ERROR in ./src/main.ts
Module not found: Error: Can't resolve '@angular/platform-browser/src/browser/transfer_state' in 'G:DocumentsProjetsMyappSourcesmasterfrontendsrc'

除了做一些肮脏的反序列化之外,还有什么想法吗?

我想这就是您想要的:

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
}
}
}

相关内容

  • 没有找到相关文章

最新更新