【发布时间】:2020-03-21 04:06:49
【问题描述】:
好吧,我一直在尝试将mat-autocomplete 添加到我的表单中,当终于开始对我有用时,这个小问题突然出现,因为背部疼痛,这被认为是我的障碍。
我希望mat-autocomplete 输入是必需的,它是必需的。但问题是,当我在输入中插入一个值时,表单不会更改为有效,即使我为其添加了一个值,它也会一直告诉我国籍是必需的。我无法继续进行下一个水平步骤。
我试图找出原因,但我失败了,我觉得解决方案会变成一个虚拟的解决方案,但长时间工作会使事情变得模糊,你们都知道。
帮助大家
这是我的<mat-form-field>
<mat-form-field appearance="outline" class="pl-sm-8" fxFlex="50">
<input matInput placeholder="Nationality *" aria-label="Nationality *" formControlName="nationalitySelect"
[matAutocomplete]="auto" [formControl]="nationalitySelect" required>
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let nationality of filteredNationalities | async" (onSelectionChange)="nationalityOnChange($event,nationality)"
[value]="nationality.name">
<span>{{nationality.name}}</span>
</mat-option>
</mat-autocomplete>
<mat-error>Nationality is required!</mat-error>
</mat-form-field>
这是我的打字稿代码
personalDetailsStep: FormGroup;
nationalitySelect: FormControl = new FormControl();
ngOnInit(): void {
// Horizontal Stepper form steps
this.personalDetailsStep = this._formBuilder.group({
nationalitySelect: ['', Validators.required],
});
}
filterNationalities() {
let me = this;
me.filteredNationalities = me.personalDetailsStep.controls["nationalitySelect"].valueChanges.pipe(
startWith(''),
map(nationality => nationality ? this._filteredNationalities(nationality) : this.nationalities.slice())
);
}
private _filteredNationalities(value: string): Observable<any>[]{
const filterValue = value.toLowerCase();
return this.nationalities.filter(nationality => nationality.name.toLowerCase().indexOf(filterValue) === 0);
}
nationalityOnChange(e, value){
let me = this;
if(e.isUserInput){
me.newEmployee.NationalityId = value.id;
}
}
请注意,我在该特定代码中向您发送了我的整个代码的一部分 组件,所以如果您看到任何丢失的东西,请告诉我。我试过我的 最好展示你需要帮助的一切
感谢您的支持
【问题讨论】: