面试题答案
一键面试- 动态切换区域设置:
- 在Angular中,可以使用
LOCALE_ID
注入令牌来动态切换区域设置。首先,需要导入LOCALE_ID
和registerLocaleData
。 registerLocaleData
用于注册不同区域的语言数据,Angular默认只提供了英语语言数据,对于其他区域需要手动注册。例如,对于德国(de - DE
),需要导入相应的语言数据并注册。- 在组件或服务中,通过注入
LOCALE_ID
,可以改变其值来切换区域设置。
- 在Angular中,可以使用
- 代码示例:
- 注册区域数据:
在
app.module.ts
中:
- 注册区域数据:
在
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform - browser';
import { AppComponent } from './app.component';
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import localeEn from '@angular/common/locales/en';
registerLocaleData(localeDe);
registerLocaleData(localeEn);
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
- 服务获取不同区域设置下的货币转换结果:
首先创建一个服务
CurrencyService
。
import { Injectable, Inject } from '@angular/core';
import { LOCALE_ID } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class CurrencyService {
constructor(@Inject(LOCALE_ID) private locale: string) {}
getCurrencyFormat(amount: number): string {
return new Intl.NumberFormat(this.locale, {
style: 'currency',
currency: 'EUR'
}).format(amount);
}
}
- 在组件中使用:
import { Component, Inject, LOCALE_ID } from '@angular/core';
import { CurrencyService } from './currency.service';
@Component({
selector: 'app - component',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
amount = 1234.56;
constructor(
@Inject(LOCALE_ID) private locale: string,
private currencyService: CurrencyService
) {}
changeLocale(locale: string) {
this.locale = locale;
console.log(this.currencyService.getCurrencyFormat(this.amount));
}
}
- HTML模板:
<button (click)="changeLocale('en - US')">US Locale</button>
<button (click)="changeLocale('de - DE')">German Locale</button>
这样,通过点击按钮调用changeLocale
方法,就可以动态切换区域设置,并获取不同区域设置下的货币转换结果。