Express、Angular、Universal以及如何使用注入获取基本url



如何将端口号从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

相关内容

  • 没有找到相关文章

最新更新