如何解决根据用户选择显示菜单项 Ionic + Angular
我创建了一个应用程序,该应用程序可以用 3 种不同的语言显示项目:Eng、Spa、Por。它们的显示方式是在第一个用户选择页面上设置的,他们在其中选择首选语言并将该值保存在 localStorage 中。
除了菜单之外一切正常,因为它是在应用打开时创建的,这是在用户选择之前创建的。
那么,我的问题是,如何获取此值以更改菜单中的语言并正确显示名称?
应用组件 html:
<ion-app>
<ion-split-pane contentId="main-content">
<ion-menu contentId="main-content" type="overlay">
<ion-content>
<ion-list id="inBox-list">
<ion-list-header>MENU</ion-list-header>
<ion-menu-toggle auto-hide="false" *ngFor="let p of appPages; let i = index">
<ion-item [routerLink]="[p.url]" lines="none" detail="false" routerLinkActive="selected" (click)="setName(p.name_esp,p.name_eng,p.name_por)">
<div class="icon" style="background: url('{{url}}api/downloadfile/{{p.image}}') 0/100% no-repeat;">
</div>
<ion-label *ngIf="lang == 'esp'">{{ p.name_esp | uppercase }}</ion-label>
<ion-label *ngIf="lang == 'eng'">{{ p.name_eng | uppercase }}</ion-label>
<ion-label *ngIf="lang == 'por'">{{ p.name_por | uppercase }}</ion-label>
</ion-item>
</ion-menu-toggle>
</ion-list>
</ion-content>
</ion-menu>
<ion-router-outlet id="main-content"></ion-router-outlet>
</ion-split-pane>
</ion-app>
应用组件 ts:
import { Component } from '@angular/core';
import { SharedService } from './services/shared.service';
@Component({
selector: 'app-root',templateUrl: 'app.component.html',styleUrls: ['app.component.scss'],})
export class AppComponent {
public appPages = [
];
pages: any[]=[];
url:string;
lang:string;
constructor(private service: SharedService) {
this.getCategories();
this.url = service.url;
this.lang = localStorage.lang;
}
getCategories(){
this.lang = localStorage.lang;
console.log('lenguaje = ' + this.lang);
this.service.getCategories().subscribe(data => {
this.pages = JSON.parse(localStorage.categories);
for(let i = 0; i<this.pages.length; i++){
this.appPages.push(this.pages[i]);
}
});
}
setName(str1,str2,str3){
if(this.lang == 'esp'){
localStorage.category_name = str1;
} else if(this.lang == 'eng'){
localStorage.category_name = str2;
} else {
localStorage.category_name = str3;
}
}
}
提前致谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。