mat-select에 대한 다중 값 사전 선택
매트 선택에서 여러 옵션을 미리 선택하려고 합니다.지금까지 저는 이것을 성취할 수 없습니다.
HTML 파일은 다음과 같습니다.
<mat-dialog-content [formGroup]="form">
<mat-form-field>
<mat-select placeholder="participants" formControlName="participants" multiple>
<mat-option *ngFor="let participant of participants" [value]="participant">{{participant}}</mat-option>
</mat-select>
</mat-form-field>
</mat-dialog-content>
컨트롤러는 다음과 같습니다.
export class EventViewModalComponent implements OnInit {
form: FormGroup;
calendarEvent: CalendarEvent;
participants = [];
constructor(private fb: FormBuilder,
private participantService: ParticipantService,
@Inject(MAT_DIALOG_DATA) event: CalendarEvent)
{
this.form = fb.group({
title: [event.title, Validators.required],
location: [event.meta.location, Validators.required],
description: [event.meta.description, Validators.required],
start: [event.start, Validators.required],
end: [event.end, Validators.required],
participants: [this.participants, Validators.required]
});
this.calendarEvent = event;
}
ngOnInit() {
this.participantService.getAll().subscribe(data =>{
for(let i = 0; i < data['length']; i++){
this.participants.push(data[i]['name']);
}
})
}
}
현재 기본값당 모든 값이 선택됩니다.다음은 현재 상태의 스크린샷입니다.
제가 달성하고자 하는 것은 오직 신디와 짐만이 다음과 같이 미리 선택되도록 하는 것입니다.
어떻게 하면 이를 달성할 수 있을까요?몇 가지 SO 질문을 읽었지만 성공하지 못했습니다.어떤 도움이든 감사합니다.
Angular6+의 경우 양식Control과 [(ngModel)]이 모두 있는 경우 사용되지 않는 경고가 표시됩니다.
양식 컨트롤과 동일한 양식 필드에서 ngModel을 사용하는 것 같습니다.반응형 지시어와 함께 ngModel 입력 속성 및 ngModelChange 이벤트를 사용하는 지원은 Angular v6에서 더 이상 사용되지 않으며 Angular v7에서 제거됩니다.
FormControl 없이 [ngModel]을 사용하는 옵션 1
첫 번째 답변에서 알 수 있듯이, [ngModel]과 (ngModelChange)를 이렇게 나눕니다.
<mat-select
[(ngModel)]="selectedFoods"
(ngModelChange)="selectedFoods" name="selectedFoods"
placeholder="Favorite food" multiple>
<mat-option *ngFor="let food of allfoods" [value]="food.value">
{{food.viewValue}}
</mat-option>
</mat-select>
그리고 ts.
allfoods: Food[] = [
{value: 'steak-0', viewValue: 'Steak'},
{value: 'pizza-1', viewValue: 'Pizza'},
{value: 'tacos-2', viewValue: 'Tacos'},
{value: 'pasta-3', viewValue: 'Pasta'}
];
selectedFoods = [
'steak-0', 'pasta-3'
];
[ngModel] 없이 [formControl]을 사용하는 옵션 2
<mat-form-field>
<mat-select [formControl]="foodForm" placeholder="Favorite food" multiple>
<mat-option *ngFor="let food of allfoods" [value]="food.value">
{{food.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
이 경우 FormControl의 생성자에서 선택이 초기화됩니다.
allfoods: Food[] = [
{value: 'steak-0', viewValue: 'Steak'},
{value: 'pizza-1', viewValue: 'Pizza'},
{value: 'tacos-2', viewValue: 'Tacos'},
{value: 'pasta-3', viewValue: 'Pasta'}
];
myselectedFoods = ['pasta-3', 'steak-0'];
foodForm: FormControl = new FormControl(this.myselectedFoods);
https://stackblitz.com/edit/angular-mat-select-multi-with-formcontrol
나는 가장 쉬운 방법은 사용하는 것이라고 생각합니다.[(ngModel)]
의 가치를 조작하기 위한 지시(또는 단방향 바인딩, 곧 다룰 것입니다.)mat-select
미리 선택할 요소가 포함된 변수를 바인딩할 수 있습니다.
<mat-select placeholder="participants" formControlName="participants" multiple [(ngModel)]="selection">
<mat-option *ngFor="let participant of participants" [value]="participant">{{participant}}</mat-option>
</mat-select>
그런 다음 초기 항목 배열을 필터링하여 기본적으로 선택할 항목만 가져올 수 있습니다(저장 위치).selection
클래스 속성(제공된 경우).
저는 STACKBLITZ를 만들어 그것이 가능하다는 것을 증명했습니다.이 예에서는 짝수 인덱스에서 항목을 필터링하고 마지막으로 "1'st, 3'rd, 5'rd, ..." 항목을 선택합니다.
공유할 수 있습니다.[(ngModel)]
단방향 바인딩만 사용하려는 경우 두 개의 별도 디렉티브로:[ngModel]
또는(ngModelChange)
자세한 내용은 각도 템플릿 구문 가이드를 참조하십시오.
언급URL : https://stackoverflow.com/questions/53491710/preselecting-multiple-values-for-mat-select-angular-6
'source' 카테고리의 다른 글
Spring REST, JSON "관리/백 참조 'defaultReference'를 처리할 수 없음" 415 지원되지 않는 미디어 유형 (0) | 2023.07.01 |
---|---|
Oracle 9 - 테이블 상태와 일치하도록 시퀀스 재설정 (0) | 2023.07.01 |
Xcode 10에서 오브젝트 라이브러리는 어디로 갔습니까? (0) | 2023.07.01 |
모든 외부 키 제약 조건 일시적으로 사용 안 함 (0) | 2023.07.01 |
설치된 모든 Gem을 제거하고 다시 시작하는 중 (0) | 2023.07.01 |