7 методов предварительного выбора значения в раскрывающемся списке Angular

Выпадающие меню обычно используются в приложениях Angular, чтобы предоставить пользователям список опций для выбора. Иногда вам может потребоваться предварительно выбрать значение по умолчанию в раскрывающемся списке, чтобы улучшить взаимодействие с пользователем. В этой статье мы рассмотрим семь различных методов достижения этой цели в Angular, а также приведем примеры кода.

Метод 1: использование ngModel и ngValue

<select [(ngModel)]="selectedValue">
  <option *ngFor="let option of options" [ngValue]="option">{{ option }}</option>
</select>
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];

Метод 2: использование реактивных форм

<form [formGroup]="form">
  <select formControlName="selectedValue">
    <option *ngFor="let option of options" [value]="option">{{ option }}</option>
  </select>
</form>
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];
constructor(private formBuilder: FormBuilder) {
  this.form = this.formBuilder.group({
    selectedValue: [this.selectedValue]
  });
}

Метод 3: использование директивы [selected]

<select>
  <option *ngFor="let option of options" [selected]="option === selectedValue">{{ option }}</option>
</select>
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];

Метод 4: использование привязки [attr.selected]

<option *ngFor="let option of options" [attr.selected]="option === selectedValue ? true : null">{{ option }}</option>
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];

Метод 5: использование [ngModel] с функцией сравнения

<select [(ngModel)]="selectedValue">
  <option *ngFor="let option of options" [ngValue]="option" [ngModel]="option" [compareWith]="compareFn">{{ option }}</option>
</select>
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];
compareFn(option1: string, option2: string) {
  return option1 === option2;
}

Метод 6: использование Renderer2

<select #dropdown>
  <option *ngFor="let option of options" [value]="option">{{ option }}</option>
</select>
import { Component, ElementRef, Renderer2, ViewChild } from '@angular/core';
@ViewChild('dropdown') dropdown: ElementRef;
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];
constructor(private renderer: Renderer2) { }
ngAfterViewInit() {
  const option = this.dropdown.nativeElement.querySelector(`[value="${this.selectedValue}"]`);
  this.renderer.setProperty(option, 'selected', true);
}

Метод 7: использование ViewChild и ссылочной переменной шаблона

<select #dropdown>
  <option *ngFor="let option of options" [value]="option">{{ option }}</option>
</select>
import { Component, ViewChild } from '@angular/core';
@ViewChild('dropdown') dropdown: any;
selectedValue: string = 'Option 2';
options: string[] = ['Option 1', 'Option 2', 'Option 3'];
ngAfterViewInit() {
  this.dropdown.nativeElement.value = this.selectedValue;
}

В этой статье мы рассмотрели семь различных методов предварительного выбора значения в раскрывающемся списке Angular. Предпочитаете ли вы использовать ngModel, реактивные формы, директивы, функции сравнения, Renderer2 или ViewChild, теперь у вас есть различные варианты реализации этой функциональности в ваших приложениях Angular. Поэкспериментируйте с этими методами и выберите тот, который соответствует вашим конкретным требованиям и стилю программирования.