我正在实现一个语言切换组件,该组件显示复选框,每个复选框对应于应用程序的每种语言(带有的翻译@ngx-translate)。
单击复选框之一时,应用语言已正确切换,但单击的mat-checkbox仍未选中。
范本:
<mat-checkbox [checked]="selectedLanguage == 'en'" (click)="switchLanguage('en')">English</mat-checkbox>
<mat-checkbox [checked]="selectedLanguage == 'fr'" (click)="switchLanguage('fr')">French</mat-checkbox>
<mat-checkbox [checked]="selectedLanguage == 'de'" (click)="switchLanguage('de')">German</mat-checkbox>
Run Code Online (Sandbox Code Playgroud)
零件 :
export class CheckboxOverviewExample {
public selectedLanguage: string;
constructor(){
this.selectedLanguage = 'fr';
}
public switchLanguage(lang: string) {
this.selectedLanguage = lang;
// this.translateService.use(lang); // changing ngx-translate language
console.log('Switched to ' + lang);
}
}
Run Code Online (Sandbox Code Playgroud)
[checked]路由到组件时,绑定正在工作。在mat-checkbox法语中确实检查时降落到组件(默认值)。现在,当我单击德语或英语时,语言会切换,法语复选框会正确取消选中,但是单击的复选框不会选中。
我遗漏了一些内容,可能只是一个小细节,但是我不明白为什么德语/英语不检查而法语却正确取消了检查。
看看这个简单的stackblitz代码以重现我的情况。
我确实有操纵哈希映射的麻烦.我的问题很简单,但我不能让它工作......
我有一个名为的接口MultilineWritable.我需要在平面文件上编组的类确实实现了这个接口,它定义了一个String toFlatFormat()函数及其相反的功能init(String flatFormat).
现在假设Contract类实现MultilineWritable并由整数标识,而Person类也实现此接口但由字符串标识.
我对合同和人员的HashMaps进行编组的功能如下:
public void marshall(HashMap<Object, MultilineWritable>){}
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法找到一种方法来转换HashMap<String, Person>为a HashMap<Object, MultilineWritable>,即使String扩展Object和Person扩展MultilineWritable.同样的铸造HashMap<Integer, Contract>...因此我无法调用我的通用功能.
感谢有关此问题的任何帮助.
只是想知道是否有一个像这样的静态推土机映射器会导致并发错误:
public static Mapper mapper = new DozerBeanMapper();
public static MyDTO toDTO(MyEntity e) {
MyDTO dto = mapper.map(e, MyDTO.class);
return dto;
}
Run Code Online (Sandbox Code Playgroud)
还是应该始终使用以下代码:
public static MyDTO toDTO(MyEntity e) {
Mapper mapper = new DozerBeanMapper();
MyDTO dto = mapper.map(e, MyDTO.class);
return dto;
}
Run Code Online (Sandbox Code Playgroud)
该方法在JBoss Server的@Stateless会话Bean中使用,可以同时访问。事实是我真的不知道Dozer是否利用库中的静态变量或实例变量来决定是否可以/应该在每个调用中使用静态Mapper或创建新实例。