Angular Universal SSR后客户端点击事件不触发?

诸葛怡平 阅读 7

我在用Angular Universal做SSR时遇到个奇怪问题,页面首屏渲染正常,但所有带(click)事件的按钮点击都没反应。比如这个登录按钮:


<button (click)="handleLogin()">登录</button>

控制台没报错,但handleLogin方法完全没执行。我检查了app.server.module.ts配置,也加了NO_ERRORS_SCHEMA,重启了ssr服务还是不行。本地ng serve跑得好好的,一用universal就失效,是不是事件绑定需要特殊处理?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
志鸣酱~
这是SSR常见的问题,Angular Universal渲染的服务器端HTML没有绑定事件,需要在客户端重新激活。直接这样处理:

import { BrowserModule, BrowserTransferStateModule } from '@angular/platform-browser';

@NgModule({
imports: [
BrowserModule.withServerTransition({ appId: 'your-app-id' }),
BrowserTransferStateModule
]
})
export class AppModule {}


确保你已经在app.module.ts里加了BrowserModule.withServerTransitionBrowserTransferStateModule,然后再检查下handleLogin()方法是不是写在了组件的ngOnInit之外,别放错位置了。
点赞
2026-02-18 12:01