有沒有辦法讓表單內的自動完成工作?我有一個輸入地址的表單。我爲狀態(這是在美國)使用自動完成(copied from Material Design's docs),除了選定的狀態未設置爲user.state之外,它正在工作。所以,當我登出myForm.form.value時提交它看起來像這樣:Angular 2材質 - 在表單中使用MD的自動完成示例
user.name : "Test"
user.phone: ...
etc.
與user.state甚至沒有顯示出來。
我的(相關)代碼:
<md-input-container>
<input
mdInput
placeholder="State"
[mdAutocomplete]="auto"
[formControl]="stateCtrl"
name="user.state"
[(ngModel)]="user.state"
>
</md-input-container>
<md-autocomplete
#auto="mdAutocomplete"
>
<md-option
*ngFor="let state of filteredStates | async" [value]="state"
(onSelectionChange)="selectState(state)"
>
{{ state }}
</md-option>
</md-autocomplete>
TS:
constructor(public dialog: MdDialog,) {
this.stateCtrl = new FormControl();
this.filteredStates = this.stateCtrl.valueChanges
.startWith(null)
.map(name => this.filterStates(name));
}
filterStates(val: string) {
return val ? this.states.filter(s => new RegExp(`^${val}`, 'gi').test(s))
: this.states;
}
即使當我嘗試使用(onSelectionChange)來調用函數selectState(州)設置user.state它仍然當我在console.log上提交表單時不顯示。
selectState(value){
this.user.state = value;
}
糊塗這裏的種類 - 首先,爲什麼喲你對輸入的值做ngModel和formControl?如果你刪除了ngModel並在formControl上做了一個valueChanges,它是否顯示值?你有formGroup作爲窗體控件的父項嗎?自動完成應該與沒有改變的值無關,所以有些東西被錯誤地實現。 – JSess