Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angular – 通过服务器上的Http请求的URL必须是绝对的.网址:./ assets / i18n / en.json大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Angular 2的新手,我在Ngx-translate组件中遇到以下问题(通过服务器上的http请求的URL必须是绝对的.URL:./ assets / i18n / en.json).我确信这个en.json文件存在,因为我向它发出http请求并且请求成功

这是我的app.module.server.ts文件

import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';
import { sharedConfig } from './app.module.shared';
import { httpR_880_11845@odule,http } from '@angular/http';
import {
    TranslateModule,TranslateLoader,MissingTranslationHandler,MissingTranslationHandlerParams
} from '@ngx-translate/core';
import { TranslatehttpLoader } from '@ngx-translate/http-loader';

export function createTranslateLoader(http: http) {
    return new TranslatehttpLoader(http,'./assets/i18n/','.json');
}

export class MymissingTranslationHandler implements MissingTranslationHandler {
    handle(params: MissingTranslationHandlerParams) {
        return '[' + params.key + ']';
    }
}

@NgModule({
    bootstrap: sharedConfig.bootstrap,declarations: sharedConfig.declarations,imports: [
        ServerModule,httpR_880_11845@odule,TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,useFactory: (createTranslateLoader),deps: [http]
            }
        }),...sharedConfig.imports
    ]
})
export class AppModule {
}

这是我的app.module.cleint.ts文件

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { httpR_880_11845@odule,http } from '@angular/http';
import { sharedConfig } from './app.module.shared';
import {
    TranslateModule,MissingTranslationHandlerParams
} from '@ngx-translate/core';
import { TranslatehttpLoader } from '@ngx-translate/http-loader';
export function createTranslateLoader(http: http) {
    return new TranslatehttpLoader(http,imports: [
        BrowserModule,FormsModule,...sharedConfig.imports
    ],providers: [
        { provide: 'ORIGIN_URL',useValue: LOCATIOn.origin },{
            provide: MissingTranslationHandler,useClass: MymissingTranslationHandler
        }
    ]
})
export class AppModule {
}

这是我的app.module.shared.ts文件

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { httpR_880_11845@odule,http } from "@angular/http";
import { BrowserModule } from "@angular/platform-browser";

import { TranslateModulE} from '@ngx-translate/core';

import { AppComponent } from './components/app/app.component'
import { NavMenuComponent } from './components/navmenu/navmenu.component';
import { HomeComponent } from './components/home/home.component';
import { FetchDataComponent } from './components/fetchdata/fetchdata.component';
import { employeesListComponent } from './components/employees/employeesList.component';
import { CounterComponent } from './components/counter/counter.component';

export const sharedConfig: NgModule = {
    bootstrap: [AppComponent],declarations: [
        AppComponent,NavMenuComponent,CounterComponent,FetchDataComponent,employeesListComponent,HomeComponent
    ],imports: [
        RouterModule.forRoot([
            { path: '',redirectTo: 'home',pathMatch: 'full' },{ path: 'home',component: HomeComponent },{ path: 'counter',component: CounterComponent },{ path: 'fetch-data',component: FetchDataComponent },{ path: 'employees-list',component: employeesListComponent },{ path: '**',redirectTo: 'home' }
        ]),BrowserModule,TranslateModule
    ],exports: [
        TranslateModule
    ]
};

解决方法

那问题就是这个问题. ./assets/i18n/en.json不是一个绝对的URL: http://foo.com/assets/i18n/en.json.我知道通常有一些方法可以指示您从与客户端代码相同的服务器提供服务.可能不是

export function createTranslateLoader(http: http) {
    return new TranslatehttpLoader(http,'/assets/i18n/','.json');
}

但是,当我在角度docs repos中四处寻找时:我看到了这个:https://github.com/angular/angular/issues/15349.因此,有角度的http服务可能不支持调用文档所在的主机.这有点令人惊讶,但你可以在javascript中使用:

window.LOCATIOn.origin

因此,只需在设置呼叫时将其添加到/ assets / i18n /.

大佬总结

以上是大佬教程为你收集整理的angular – 通过服务器上的Http请求的URL必须是绝对的.网址:./ assets / i18n / en.json全部内容,希望文章能够帮你解决angular – 通过服务器上的Http请求的URL必须是绝对的.网址:./ assets / i18n / en.json所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。