2017-07-18 59 views
1

我是angular2的新手,所以試圖理解這裏的很多東西。我有一個選擇框,我需要將值傳遞給更改方法(正在嘗試自動完成)。但是,當我使用[(ngModel)]時,該綁定不起作用,並拋出一個錯誤。有人會知道如何做到這一點?<select>標記模型值不起作用

<select class="form-control" name="SearchBy" [(ngModel)]="SearchFor" (change)="changeSearchFor(SearchFor)"> 
         <option value="1">Name</option> 
         <option value="2">ID</option> 
         <option value="3">SID</option> 
         <option value="4">Cost Center</option> 
         <option value="5">Manager ID</option> 
         <option value="6">Unit</option> 
        </select> 
+1

你能告訴你的組件和 – brijmcq

+0

你在'SearchFor'得到錯誤的錯誤? – Darshita

+0

「正在拋出一個錯誤」請發佈完整且確切的錯誤消息 –

回答

1

如果您使用ngModel請使用ngModelChange以獲得有關更改的通知。 (change)="..."SearchFor之前觸發由ngModel更新更新

<select class="form-control" name="SearchBy" [(ngModel)]="SearchFor" (ngModelChange)="changeSearchFor($event)"> 

Plunker example

0

如果您使用ngModel指令得到錯誤,可能是由於您沒有導入FormsModule,因爲語法對我來說似乎是正確的。 您在模塊中需要這些線:

import {FormsModule} from '@angular/forms'; 

@NgModule({ 
    imports: [ 
     FormsModule 
    ] 
}) 

而且你不需要通過SeachFor作爲參數,因爲它是你已經在你的打字稿鏈接的變量。

PD:如果你打算包含自動完成,你有沒有考慮過定義一個模型驅動的表單?這樣,您可以訂閱的形式valueChanges觀察到的,適用反應式編程它,因爲它是在這個環節上解釋說: https://blog.thoughtram.io/angular/2016/06/22/model-driven-forms-in-angular-2.html

0

如果你只需要在你的功能得到一個值,那麼你可以不用ngModel

<select class="form-control" name="SearchBy" (change)="changeSearchFor($event.target.value)"> 
    <option value="1">Name</option> 
    <option value="2">WWID</option> 
    <option value="3">IDSID</option> 
    <option value="4">Cost Center</option> 
    <option value="5">Manager WWID</option> 
    <option value="6">Organisational Unit</option> 
</select> 

如果你使用ngModel,確保進口,並加入到@NgModule的進口陣列FormsModule:

import {FormsModule} from '@angular/forms' 
... 
@NgModule({ 
    imports: [ BrowserModule, FormsModule ], 
    declarations: [ App ], 
    bootstrap: [ App ] 
}) 

例如plunker: https://plnkr.co/edit/PGeipOAz5kKpxO5HdTc8?p=preview