@Malkolm163

Как изменить путь загрузки модулей angular?

в проекте несколько основных и несколько дополнительных модулей (с ленивой загрузкой)

На бекэнде свой движок стоит - bitrix

Хочу сделать шаблон и поместить все файлы (и assets и все файлы модулей приложения в папку шаблона). папка шаблона - это /local/templates/templateName и соответственно туда хочу положить все модули и ресурсы

Но проект откликается с главной страницы (/), то есть в я должен указать / иначе не будет работать маршрутизация. Но тогда и все ресурсы оттуда же грузиться будут пытаться.

Ка изменить это поведение, чтобы маршрутизация работала от корня, а файлы грузились с /local/templates/templateName?
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
dmitry_luzanov
@dmitry_luzanov
Web frontend developer
Что-то типа такого?

// main.ts
platformBrowserDynamic()
  .bootstrapModule(AppModule, {
    providers: [
      {
        provide: ResourceLoader,
        useClass: ResourceLoaderImpl
      }
    ]
  })
  .catch(err => console.log(err))

//resource-loader.service.ts
@Injectable({ providedIn: 'root' })
export class ResourceLoaderImpl implements ResourceLoader {
  public get(url: string): Promise<string> {
    url = `your/assets/url/${url}`

    let resolve: (result: any) => void
    let reject: (error: any) => void
    const promise = new Promise<string>((res, rej) => {
      resolve = res
      reject = rej
    })

    const xhr = new XMLHttpRequest()
    xhr.open('GET', url, true)
    xhr.responseType = 'text'

    xhr.onload = function() {
      const response = xhr.response || xhr.responseText

      let status = xhr.status === 1223 ? 204 : xhr.status

      if (status === 0) {
        status = response ? 200 : 0
      }

      if (200 <= status && status <= 300) {
        resolve(response)
      } else {
        reject(`Failed to load ${url}`)
      }
    }

    return promise
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы