您可以创建一个FormControl 并将其绑定到模板。
FormControl 实例上有一个 valueChanges Observable,您可以订阅它,以获取该控件当前选定的值。
但是如果你还想要之前的值,那么你可以使用pairwiseRxjs 运算符。像这样的:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { pairwise } from 'rxjs/operators';
import { Subscription } from 'rxjs';
import { FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit, OnDestroy {
name = 'Angular';
selectListValue: FormControl = new FormControl();
options = [
'Option 1',
'Option 2',
'Option 3',
'Option 4',
];
subscription: Subscription;
ngOnInit() {
this.subscription = this.selectListValue.valueChanges
.pipe(pairwise())
.subscribe(changes => console.log(changes));
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
在你的模板中:
<select [formControl]="selectListValue" name="" id="">
<option value="">Please select an Option</option>
<option *ngFor="let option of options" [value]="option">{{option}}</option>
</select>
PS:因为FormControl 的默认值是undefined,所以它不会在第一次选择时给你一个值。如果您第一次也想要上一个和下一个值,请为 FormControl 分配一个默认值。