- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个下拉列表,我想刷新该值,更确切地说,我有两种语言,对于每种语言,我都有这些元素 [name-for English, and namecz for Czech],如果值为“English” “捷克语的英语将是捷克语,到目前为止,我已经设法以每种语言显示列表,甚至选择了正确的值,我的问题是,如果我更改语言,所选值保持不变,不会改变.
这是我想要得到的类似示例。 https://stackblitz.com/edit/angular-jfetuh?file=app%2Fselect-value-binding-example.html
这是我的有效负载:
[{id: 19, name: "Travel Recreation and Leisure", nameCZ: "test19"},…]
0: {id: 19, name: "Travel Recreation and Leisure", nameCZ: "test19"}
1: {id: 20, name: "Wholesale and Distribution", nameCZ: "test20"}
2: {id: 1, name: "Agriculture and Mining", nameCZ: "test1", description: "hello"}
3: {id: 2, name: "Business Services", nameCZ: "test2"}
4: {id: 3, name: "Computer and Electronics", nameCZ: "test3"}
5: {id: 4, name: "Consumer Services", nameCZ: "test4"}
6: {id: 5, name: "Education", nameCZ: "test5"}
7: {id: 6, name: "Energy and Utilities", nameCZ: "test 6"}
8: {id: 7, name: "Financial Services", nameCZ: "test 7"}
9: {id: 8, name: "Government", nameCZ: "test 8"}
10: {id: 9, name: "Health, Pharmaceuticals, and Biotech", nameCZ: "test9"}
11: {id: 10, name: "Manufacturing", nameCZ: "test10"}
12: {id: 11, name: "Media and Entertainment", nameCZ: "test11"}
13: {id: 12, name: "Non-profit", nameCZ: "test12"}
14: {id: 13, name: "Other", nameCZ: "test13"}
15: {id: 14, name: "Real Estate and Construction", nameCZ: "test14"}
16: {id: 15, name: "Retail", nameCZ: "test15"}
17: {id: 16, name: "Software and Internet", nameCZ: "test16"}
18: {id: 17, name: "Telecommunications", nameCZ: "test17"}
19: {id: 18, name: "Transportation and Storage", nameCZ: "test18"}
预期结果:19: {id: 18, name: "Transportation and Storage", nameCZ: "test18"}
如果语言是英语并且我们有选择的值“Transportation and Storage”,如果我改变语言我希望选择的值以某种方式翻译/选择“test18”
在 HTML 我有:
<div class="field-box">
<mat-form-field formGroupName="industry" *ngIf="language">
<input type="text" placeholder="Search for Industries " aria-label="Number" matInput
formControlName="searchIndustriesInput" [matAutocomplete]="industryAutoComplete">
<mat-autocomplete #industryAutoComplete="matAutocomplete" [displayWith]="displayIndustries.bind(this)"
(optionSelected)="industrySelected($event)">
<div *ngIf="showCurrentLang">
<mat-option *ngFor="let item of filteredIndustries | async" [value]="item">
{{item.name}}
</mat-option>
</div>
<div *ngIf="!showCurrentLang">
<mat-option *ngFor="let item of filteredIndustries | async" [value]="item">
{{item.nameCZ}}
</mat-option>
</div>
</mat-autocomplete>
<div
*ngIf="industryForm.controls.id.invalid && (industryForm.controls.id.dirty || industryForm.controls.id.touched)"
class="alert alert-danger">
<mat-error *ngIf="industryForm.controls.id.errors.required">Must fill this field</mat-error>
</div>
</mat-form-field>
</div>
</div>
在 TS 我有
export class CustomerQuestionnaireComponent implements OnInit {
selectedValueEmployeeValue: string;
selectedValueIndustryValue: string;
selectedValueLanguageValue: string;
selectedValueAppsValue: string;
show: boolean;
showCurrentLang: boolean;
private language: string;
afterDisplayIndustries: boolean;
filteredIndustries: Observable<IIndustry[]>;
selectedApps: IAppIntegratedApp[] = [];
@ViewChildren(MatChip) children: QueryList<MatChip>;
form: FormGroup;
@Input() isLoading: boolean;
@Input() industries: IIndustry[];
@Input() errMsg: string;
@Input() updateMsg: string;
@Input() customerPreference: CustomerPreference;
@Input() avaliableLanguages: ILanguage[];
@Input() filteredApps: IAppIntegratedApp[];
@Output() searchApps: EventEmitter<string> = new EventEmitter<string>();
@ViewChild('auto') matAutocomplete: MatAutocomplete;
@ViewChild('searchAppInput') searchAppInput: ElementRef;
companySizeValues: IDataSourceOne[] = [
{ key: 'INDIVIDUAL', value: 'Individual(1)' },
{ key: 'MICRO', value: 'Micro(2-9)' },
{ key: 'SMALL', value: 'Small(10-49)' },
{ key: 'MEDIUM', value: 'Medium-sized(49-249)' },
{ key: 'BIG', value: 'Big(250+)' },
];
separatorKeysCodes: number[] = [ENTER, COMMA];
constructor(private fb: FormBuilder, private langService: LangService ,
private translate: TranslateService) {
this.langService.currentLang.subscribe((lang) => {
this.language = lang;
if (this.language === 'en') {
this.showCurrentLang = true ;
} else {
this.showCurrentLang = false ;
}
if (this.afterDisplayIndustries) {
this.displayIndustries((<FormGroup>this.form.controls.industry).value.searchIndustriesInput);
this.industrySelected();
}
});
}
get isFormReady() {
return this.avaliableLanguages !== undefined;
}
ngOnInit() {
this.buildForm();
this.toggleOtherIndustryField();
this.filteredIndustries = (<FormGroup>this.form.controls.industry).controls.searchIndustriesInput.valueChanges
.pipe(
startWith(''),
map(value => this.filter(value)),
);
}
private filter (value: string | IIndustry): IIndustry[] {
if (this.language === 'en') {
console.log(this.language);
if (value && (<IIndustry>value).name) {
return this.industries;
}
const filterValue = (<string>value).toLowerCase();
return this.industries.filter(option => option.name.toLowerCase().includes(filterValue));
}
if (value && (<IIndustry>value).nameCZ) {
return this.industries;
}
const filterValue = (<string>value).toLowerCase();
return this.industries.filter(option => option.nameCZ.toLowerCase().includes(filterValue));
}
displayIndustries (industry: IIndustry) {
if (industry) {
this.afterDisplayIndustries = true;
console.log((this.language === 'en') ? industry.name : industry.nameCZ);
return (this.language === 'en') ? industry.name : industry.nameCZ;
}
return undefined;
}
buildForm(): void {
this.form = this.fb.group({
industry: this.fb.group({
searchIndustriesInput: this.customerPreference.industry,
id: [this.customerPreference.industry.id, [
Validators.required,
]],
});
}
get industryForm(): FormGroup {
return this.f.industry as FormGroup;
}
get f() {
return this.form.controls;
}
industrySelected(e?) {
const industryForm = <FormGroup>this.form.controls.industry;
industryForm.controls.id.setValue(industryForm.controls.searchIndustriesInput.value.id);
this.toggleOtherIndustryField();
}
}
有没有人可以帮助我..提前致谢。
最佳答案
一个简单的 *ngIf
就可以完成这项工作,请记住,当我们选择一个选项时,我们是在选择数组中的一个项目——英语或捷克语描述是特定项目的子项;为了显示完整的演示,我在顶部插入了一个单选按钮以在两种语言之间切换...
相关HTML:
<mat-radio-group aria-label="Select an option" [(ngModel)]="selectedLanguage">
<mat-radio-button value="english">English</mat-radio-button>
<mat-radio-button value="czech">Czech</mat-radio-button>
</mat-radio-group>
<br/>
<p> selected language: {{selectedLanguage}} </p>
<br/>
<mat-form-field>
<mat-label>select option</mat-label>
<mat-select [formControl]="langSelect">
<mat-option *ngFor="let item of dualArray" [(value)]="item">
<!-- {{item.id}} -->
<ng-container *ngIf="selectedLanguage == 'english'">
{{item.name}}
</ng-container>
<ng-container *ngIf="selectedLanguage == 'czech'">
{{item.nameCZ}}
</ng-container>
</mat-option>
</mat-select>
</mat-form-field>
<p>You selected:
<ng-container *ngIf="selectedLanguage == 'english'">
{{langSelect.value?.name}}
</ng-container>
<ng-container *ngIf="selectedLanguage == 'czech'">
{{langSelect.value?.nameCZ}}
</ng-container>
</p>
相关TS:
import { Component } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
/** @title Select with 2-way value binding */
@Component({
selector: 'select-value-binding-example',
templateUrl: 'select-value-binding-example.html',
styleUrls: ['select-value-binding-example.css'],
})
export class SelectValueBindingExample {
selected = '';
selectedLanguage = 'english';
langSelect = new FormControl('', []);
dualArray = [
{ id: 19, name: "Travel Recreation and Leisure", nameCZ: "test19" }
, { id: 20, name: "Wholesale and Distribution", nameCZ: "test20" }
, { id: 1, name: "Agriculture and Mining", nameCZ: "test1", description: "hello" }
, { id: 2, name: "Business Services", nameCZ: "test2" }
, { id: 3, name: "Computer and Electronics", nameCZ: "test3" }
, { id: 4, name: "Consumer Services", nameCZ: "test4" }
, { id: 5, name: "Education", nameCZ: "test5" }
, { id: 6, name: "Energy and Utilities", nameCZ: "test 6" }
, { id: 7, name: "Financial Services", nameCZ: "test 7" }
, { id: 8, name: "Government", nameCZ: "test 8" }
, { id: 9, name: "Health, Pharmaceuticals, and Biotech", nameCZ: "test9" }
, { id: 10, name: "Manufacturing", nameCZ: "test10" }
, { id: 11, name: "Media and Entertainment", nameCZ: "test11" }
, { id: 12, name: "Non-profit", nameCZ: "test12" }
, { id: 13, name: "Other", nameCZ: "test13" }
, { id: 14, name: "Real Estate and Construction", nameCZ: "test14" }
, { id: 15, name: "Retail", nameCZ: "test15" }
, { id: 16, name: "Software and Internet", nameCZ: "test16" }
, { id: 17, name: "Telecommunications", nameCZ: "test17" }
, { id: 18, name: "Transportation and Storage", nameCZ: "test18" }
];
}
关于javascript - Angular Material : How to refresh a drop-down list after a certain condition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56539434/
在我的phone-gap index.html javascript部分中,window.refresh用于IOS,this.refresh用于android。我想对两者使用相同的index.html
我正在使用 Guzzle 获取域上设置了元刷新的网页的 HTML: Guzzle 似乎没有拦截这种重定向。这是正确的吗?我可以将 Guzzle 配置为跟随刷新吗? 我应该考虑其他哪些解决方案来解决问
我试图在另一个 DropDownList 发生变化后刷新下拉列表,但是 Refresh() 方法是未定义错误正在提升。我再次尝试读取数据源,它显示它正在加载,但数据仍然相同。请帮助解决这个问题。 代码
swift 我正在努力做到这一点,当您在 tableview 上拉动刷新时,它会使用存储在 Parse.com 上的数据更新 tableview 我已经研究过了,看来我需要使用 loadObjects
我有以下物化 View - CREATE MATERIALIZED VIEW TESTRESULT ON PREBUILT TABLE WITH REDUCED PRECISION REFRESH F
我正在使用 Cognito 用户池对系统中的用户进行身份验证。成功的身份验证会提供ID token (JWT)、访问 token (JWT) 和刷新 token 。 documentation her
我想使用 FlashMessage 显示错误(或成功)消息同时让我的页面在所需时间重新加载 我正在使用 FlashMessage我的代码看起来像 render() { return ( {
更新:我已经写了一篇博文,介绍我对这个问题的了解。我仍然不完全理解它,但希望有人会阅读这篇文章并阐明我的问题:http://andymcfee.com/2012/04/04/icon-fonts-ps
所以我有一个物化 View (我知道......): CREATE MATERIALIZED VIEW vw_my_view_here REFRESH COMPLETE START WITH SYSD
我正在尝试使用 the angular-oauth2-oidc Silent Refresh实现与在 IdentityServer4 服务器中配置的隐式流相结合。我有一个在 ng new ng-and
TL;DR - 如果 oauth2 授权发生在原生 android/ios 应用程序中,我如何在后端刷新 token ? 我正在研究 oauth2 与谷歌日历的集成。我的堆栈是将 SPA 应用程序作为
作为前言,我对java很陌生。因此,请期待愚蠢的错误。 我正在尝试在 BlueJ 中使用 java 的绘图面板做一个项目,但我不知道如何制作一个具有移动对象的程序。这是一个项目,所以提供了代码。我们必
我正在尝试使用我在许多网站上找到的不显眼但非常有用的润色来润色我的网络编程技能。 Stackoverflow.com,举个例子。当我提出问题时,页面会提交问题,我的浏览器会自行重新加载并显示我的问题。
AjaxControlToolkit.dll.refresh 文件的作用是什么? 最佳答案 *.dll.refresh 文件是一个非常简单的文件,它告诉项目外部引用所在的位置。 http://mons
如何使用watir-webdrive刷新页面? 我尝试了他们在这里说的话:http://watirwebdriver.com/sending-special-keys/,但是没有运气。 browser
我目前正在制作一个交互式图表,该图表应该计算商业项目的潜在风险因素。为此,我一直在使用百度 ECharts,并让图表在视觉上工作,但是当数据发生变化时无法让图表更新。 数据来自外部调查问卷,该问卷使用
在 plupload div 之后,我有一个带有 plupload 的上传表单和一个带有 bool 值的复选框。 如果选中该复选框,我想更改 plupload 中 url 的值。 这是我的代码
我有一个相当大的PHP代码库(10k文件),可以在Windows计算机上使用Eclipse 3.4/PDT 2来工作,而这些文件则托管在Debian文件服务器上。我通过Windows上的映射驱动器进行
使用 Angularjs v0.9 和 php 来实现我的成员(member)系统 在下面的函数中,我将调用一个api来编辑成员(member)的数据,成功后,php函数将返回 {"success":
我正在使用 setColor 和 getColor 方法更改 JPanel 的颜色。 现在我想更改它,这样您就不必在调用 getColor 的函数中单击 getColor 按钮 100 毫秒。 但是在
我是一名优秀的程序员,十分优秀!