Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时动态更改Angular 7中的区域设置,而无需重新加载应用程序_Angular_Typescript_Localization_Angular7_Setlocale - Fatal编程技术网

在运行时动态更改Angular 7中的区域设置,而无需重新加载应用程序

在运行时动态更改Angular 7中的区域设置,而无需重新加载应用程序,angular,typescript,localization,angular7,setlocale,Angular,Typescript,Localization,Angular7,Setlocale,我试图在运行时更改angular应用程序中的Locale\u Id,但必须使用window.location.reload()来触发Locale更改 我想在不重新加载应用程序的情况下更改区域设置 这是我的密码: 应用程序模块 locale.service 应用程序组件 从'@angular/core'导入{Component}; 从“/services/locale.service”导入{localeseservice}; @组成部分({ 选择器:'应用程序根', 模板:` 选择语言: 英语 阿

我试图在运行时更改angular应用程序中的Locale\u Id,但必须使用
window.location.reload()
来触发Locale更改

我想在不重新加载应用程序的情况下更改区域设置

这是我的密码:

应用程序模块 locale.service 应用程序组件
从'@angular/core'导入{Component};
从“/services/locale.service”导入{localeseservice};
@组成部分({
选择器:'应用程序根',
模板:`
选择语言:

英语 阿拉伯文 ` }) 导出类AppComponent{ 构造函数(专用会话:LocaleService){} 英文(){ 此.session.registerCulture('en');
window.location.reload();//我认为您不需要重新加载,只需稍微延迟一下即可结束
registerCulture

例如:

english() {
    spinner.show();  // <-- start any loader
    setTimeout(() => {
            this.session.registerCulture('en');
            spinner.hide();  // <-- stop the loader
          }, 1000);    
    // window.location.reload();
  }
english(){
spinner.show();//{
此.session.registerCulture('en');

spinner.hide();//当您使用baseHref='/ar/'时,传统的方法如何:它不适合您?我试图在angular 8中实现它,但不起作用。即使在页面刷新中也不起作用。只有在运行
ng serve--configuration=de
import { Injectable } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeEnglish from '@angular/common/locales/en';
import localeArabic from '@angular/common/locales/ar';

@Injectable({ providedIn: 'root' })
export class LocaleService{

    private _locale: string;

    set locale(value: string) {
        this._locale = value;
    }
    get locale(): string {
        return this._locale || 'en';
    }

    registerCulture(culture: string) {
        if (!culture) {
            return;
        }
        this.locale = culture;

        switch (culture) {
            case 'en': {
                registerLocaleData(localeEnglish);
                break;
            }
            case 'ar': {
                registerLocaleData(localeArabic);
                break;
            }
        }
    }
}
import { Component } from '@angular/core';
import { LocaleService} from "./services/locale.service";

@Component({
  selector: 'app-root',
  template: `
    <p>Choose language:</p>
    <button (click)="english()">English</button>
    <button (click)="arabic()">Arabic</button>
  `
})
export class AppComponent {

  constructor(private session: LocaleService) {}

  english() {
    this.session.registerCulture('en');
    window.location.reload(); // <-- I don't want to use reload
  }

  arabic() {
    this.session.registerCulture('ar');
    window.location.reload(); // <-- I don't want to use reload
  }
}
english() {
    spinner.show();  // <-- start any loader
    setTimeout(() => {
            this.session.registerCulture('en');
            spinner.hide();  // <-- stop the loader
          }, 1000);    
    // window.location.reload();
  }