반응형
[표시]를 사용하여 표시하는 방법자동 완성 재료2의 경우
나는 있습니다.array
API에서 제공되며 Material2#를 사용하고 있습니다.필터링하려면 자동 완성...지금까지는 작동하지만 옵션에 바인딩된 값 대신 다른 속성을 표시하는 데 어려움이 있습니다.
사용해야 하는 건 알지만, 제가 예상한 대로 작동하지 않습니다.다음과 같이 호출되는 함수[displayWith]="displayFn.bind(this)">
그냥 나에게 돌려줘요.id
어떻게 하면 전체 개체를 얻을 수 있으며 따라서 반환할 수 있습니다.name
제 기능으로
그나저나, 여전히 FormControl에서 ID를 바인딩하고 싶습니다.
일부 코드:
구성 요소:
export class AutocompleteOverviewExample {
stateCtrl: FormControl;
filteredStates: any;
states = [
{
id: 1,
name: 'Alabama'
},
{
id: 2,
name: 'North Dakota'
},
{
id: 3,
name: 'Mississippi'
}
];
constructor() {
this.stateCtrl = new FormControl();
this.filteredStates = this.filterStates('');
}
onKeyUp(event: Event): void {
this.filteredStates = this.filterStates(event.target.value);
}
filterStates(val: string): Observable<any> {
let arr: any[];
console.log(val)
if (val) {
arr = this.states.filter(s => new RegExp(`^${val}`, 'gi').test(s.name));
} else {
arr = this.states;
}
// Simulates request
return Observable.of(arr);
}
displayFn(value) {
// I want to get the full object and display the name
return value;
}
}
템플릿:
<md-input-container>
<input mdInput placeholder="State" (keyup)="onKeyUp($event)" [mdAutocomplete]="auto" [formControl]="stateCtrl">
</md-input-container>
<md-autocomplete #auto="mdAutocomplete" [displayWith]="displayFn.bind(this)">
<md-option *ngFor="let state of filteredStates | async" [value]="state.id">
{{ state.name }}
</md-option>
</md-autocomplete>
기본적으로 이 질문과 거의 동일합니다(불행히도 두 답변 모두 잘못되었거나 오류가 발생했습니다).
여기 플런커가 있습니다.
전체 개체를 바인딩할 경우md-options
그런 다음 옵션에 바인딩해야 합니다.state
그리고 돌아옴state.name
에displayFn
이런 식으로 묶을 필요가 없습니다.this
.
<md-autocomplete #auto="mdAutocomplete" [displayWith]="displayFn">
<md-option *ngFor="let state of filteredStates | async" [value]="state">
{{ state.name }}
</md-option>
</md-autocomplete>
displayFn(state) {
return state.name;
}
그리고 당신이 오직 묶고 싶다면.state.id
로.md-options
당신은 루프를 통과해야 합니다.states
찾기 위해서.state.name
에 기반을 둔state.id
그리고 이런 식으로 구속력이 있습니다.this
필요합니다.
<md-autocomplete #auto="mdAutocomplete" [displayWith]="displayFn.bind(this)">
<md-option *ngFor="let state of filteredStates | async" [value]="state.id">
{{ state.name }}
</md-option>
</md-autocomplete>
displayFn(id) {
if (!id) return '';
let index = this.states.findIndex(state => state.id === id);
return this.states[index].name;
}
언급URL : https://stackoverflow.com/questions/44234290/how-to-display-using-displaywith-in-autocomplete-material2
반응형
'programing' 카테고리의 다른 글
스프링 부트에 스프링 컨버터를 프로그래밍 방식으로 등록 (0) | 2023.07.10 |
---|---|
WordPress 콜백 함수에서 게시 메타 가져오기 (0) | 2023.07.10 |
data.목록에 대한 행 프레임 (0) | 2023.07.10 |
도커화된 몽고의 데이터 초기화 (0) | 2023.07.10 |
Oracle 트리거 ORA-04098: 트리거가 잘못되었으며 재검증에 실패했습니다. (0) | 2023.07.10 |