gpt4 book ai didi

javascript - Angular 8 baseUrl 被删除

转载 作者:行者123 更新时间:2023-12-02 22:47:40 25 4
gpt4 key购买 nike

我们尝试做的是在 PHP 环境中集成 Angular 应用程序。因此,该网站将完全在 PHP 上运行静态上下文,只有当用户单击登录时,才会出现在 Angular 部分。

那么,现在问题来了。当我们在 PHP 中输​​入 URL 时,它将类似于 ...domain/nl/page。到目前为止一切顺利,这被重定向到 Angular ,这也有效, Angular 负载。但随后 Angular 删除了链接的最后一部分并将其更改为

...domain/{pageThatAngularIsIn}.

这是我们想要保留 URL 的语言的地方

.../domain/nl/{pageThatAngularIsIn} or even 
.../domain/nl/page/{pageThatAngularIsIn} -> step by step

因此 Angular 应该忽略 URL 中的语言部分,但也不会将其从 URL 中删除。

有人知道这是否可能以及为什么会发生这种情况吗?

最佳答案

您的问题可能会发生,因为 Angular 认为 domain/ 是它应该附加自己的路由的基本路由。根据您的描述,听起来您希望基本路由改为 domain/nl/

这是一个简单的修复。在嵌入了 Angular 根组件的 index.html 文件中,在 head 中查找 base 元素并将其设置为基本路径。默认情况下,通常是这样的:

<base href="/">

尝试一下以获得您需要的东西。也许:

<base href="/nl">

See the docs

如果您需要在 Angular 应用程序中使用相同的基础,例如以使用相同基础的方式进行 http 调用,您可能应该在根模块中使用 APP_BASE_HREF相反。喜欢:

import {Component, NgModule} from '@angular/core';
import {APP_BASE_HREF} from '@angular/common';

@NgModule({
...
providers: [{provide: APP_BASE_HREF, useValue: '/nl'}]
})
class AppModule {}

有了这个,您将能够在您的服务中注入(inject)基础,例如进行 http 调用。

@Injectable()
export class MyService {
constructor(
private http: HttpClient,
@Inject(APP_BASE_HREF) private baseHref: string
) {}

getRecords() {
return this.http.get(this.baseHref + '/records')
}
}

See the docs

关于javascript - Angular 8 baseUrl 被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58322871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com