Angular 8 baseUrl уничтожается - PullRequest
       31

Angular 8 baseUrl уничтожается

0 голосов
/ 10 октября 2019

То, что мы пытаемся сделать, это интегрировать и угловое приложение в среде PHP. Таким образом, сайт будет полностью работать на PHP для статического контекста, только когда пользователь нажмет на логин, он окажется в угловой части.

Итак, теперь проблема. Когда мы введем URL в PHP, это будет что-то вроде ...domain/nl/page. Пока все хорошо, и это перенаправить на угловой, это тоже работает, угловая нагрузка. Но затем angular удаляет последнюю часть ссылки и меняет ее на

...domain/{pageThatAngularIsIn}.

. Здесь мы хотим сохранить язык и URL должен быть

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

Так что angular следует игнорироватьязыковая часть в URL, но также не стирайте его с URL.

Кто-нибудь знает, возможно ли это, почему это происходит?

1 Ответ

1 голос
/ 10 октября 2019

Возможно, ваша проблема возникает из-за того, что Angular считает, что domain/ является базовым маршрутом, к которому он должен добавить свою собственную маршрутизацию. Из вашего описания звучит так, как будто вы хотите, чтобы базовый маршрут был domain/nl/.

Это простое исправление. В файле index.html, в который встроен ваш угловой угловой компонент, найдите элемент base в голове и установите его в качестве базового пути. По умолчанию это обычно что-то вроде этого:

<base href="/">

Поэкспериментируйте с ним, чтобы получить то, что вам нужно. Возможно:

<base href="/nl">

См. Документы

Если вам потребуется использовать эту же базу в вашем угловом приложении, например, для выполнения вызовов 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 {}

При этом вы сможете вводить базу в свои сервисы, например, совершать свои http-звонки.

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

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

См. Документы

...