angular – 如何有条件地禁用客户端
发布时间:2020-12-17 18:07:16 所属栏目:安全 来源:网络整理
导读:我有一个服务器端呈现的应用程序(有过渡),我有一个404页面,我已经放入一个懒惰的模块(所以我不增加加载的 Javascript大小). 这工作正常,但是当客户端接管时有一些闪烁,我认为这是由于主块完成加载后的JS块加载. 鉴于此页面只包含静态链接和一个routerLink,根
我有一个服务器端呈现的应用程序(有过渡),我有一个404页面,我已经放入一个懒惰的模块(所以我不增加加载的
Javascript大小).
这工作正常,但是当客户端接管时有一些闪烁,我认为这是由于主块完成加载后的JS块加载. 鉴于此页面只包含静态链接和一个routerLink,根本不需要客户端,我想知道是否有办法在某些URL上禁用客户端 编辑:正如评论中建议的那样,我试图有条件地引导应用程序.我不能将URL用作条件,因为服务器对不存在的URL响应404(此时没有重定向).因此,最适合使用的是我在服务器端成功设置的TransferState,它在关闭正文标记之前生成一些输出. 不幸的是我没有找到任何方法在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 } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |