如何将端口号从express获取到Angular Universal中,但仍然使前端可用。(角度13(
所以是设置的基础。我已经加载了Angular Universal(英雄教程(。
在server.ts文件中,我将其添加到渲染器中:res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }, { provide: BASE_URL, useValue: req.get('host') }] });
基本url在一个新文件中定义:export const BASE_URL = new InjectionToken<string>('BaseUrl');
接下来,我需要将该基本url导入到组件/服务构造函数中:@Inject(BASE_URL) private baseUrl: string
然后控制台在我的onUnit或构造函数中注销。。。console.log(this.baseUrl);
运行整个过程,它会在我运行网站的控制台中给我一个号码。
现在,前端当然崩溃了。(我们不知道从哪里获得基本url注入,因为我们没有将其声明为应用程序的提供者。让我们这样做:providers: [{ provide: BASE_URL, useValue: "test"}]
好的,现在。。。我们运行它,突然我们得到了";测试";在我们的express控制台中,应用程序就可以工作了。
有办法同时做到这两点吗?从快线拿到港口,不要在前端引爆炸弹。
我想在运行SSR时得到基本url,但在浏览器中运行时得到一个空字符串。
正确答案是:不要在app.module.ts中使用提供程序,并在将其注入构造函数/服务时使用可选关键字
@Optional() @Inject(BASE_URL) private baseUrl: string