EDIT: Mise à jour de Plunkr: http://plnkr.co/edit/fQ7P9KPjMxb5NAhccYIq?p=preview
cette partie fonctionne:
<div *ngFor="let entry of entries | async">
Label: {{ entry.label }}<br>
Value: {{ entry.value }}
</div>
mais j'ai des problèmes avec la zone de sélection, le message d'erreur est:
Impossible de se lier à 'ngModel' car ce n'est pas une propriété connue de 'select'
L'ensemble du composant:
//our root app component
import {Component} from '@angular/core';
import {NgFor} from '@angular/common';
import {HTTP_PROVIDERS, Http} from '@angular/http';
import 'rxjs/Rx';
import {Observable} from 'rxjs/Rx';
@Component({
selector: 'my-app',
providers: [HTTP_PROVIDERS],
template: `
<select [(ngModel)]="selectValue" name="selectValue">
<option *ngFor="let entry of entries | async"
[value]="entry.value">{{entry.label}}</option>
</select>
<div *ngFor="let entry of entries | async">
Label: {{ entry.label }}<br>
Value: {{ entry.value }}
</div>
`,
directives: [NgFor]
})
export class App {
entries: any = {};
selectValue:any;
constructor(private _http: Http) {
this.entries = this._http.get("./data.json")
.map(res => res.json());
}
}
et data.json
[
{
"timestamp": 0,
"label": "l1",
"value": 1
},
{
"timestamp": 0,
"label": "l2",
"value": 2
},
{
"timestamp": 0,
"label": "l3",
"value": 3
}
]
> = RC.5
La FormsModule
doit être importée pour rendre ngModel
disponible
@NgModule({
imports: [BrowserModule /* or CommonModule */,
FormsModule, ReactiveFormsModule],
...
)}
class SomeModule {}
<= RC.4
Dans config.js
ajouter
'@angular/forms': {
main: 'bundles/forms.umd.js',
defaultExtension: 'js'
},
dans main.ts
add
import {provideForms, disableDeprecatedForms} from '@angular/forms';
bootstrap(App, [disableDeprecatedForms(),provideForms()])
Voir également
Dans app.modules.ts après
import { NgModule } from '@angular/core';
mettre:
import { FormsModule } from '@angular/forms';
Et puis dans
imports: [
BrowserModule
],
insérez le FormsModule quelque chose comme:
imports: [
BrowserModule,
FormsModule
],
Cela m'arrivait dans ma suite de tests, malgré le fait que j'avais déjà importé FormsModule
dans le fichier *.module.ts
de mon composant.
Dans mon fichier *.component.spec.ts
, je devais ajouter à la fois FormsModule
et ReactiveFormsModule
à la liste des importations dans configureTestingModule
:
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
...
TestBed.configureTestingModule({
imports: [
FormsModule,
ReactiveFormsModule,
....],
providers: [MyComponent, ...],
declarations: [MyComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
Cela a corrigé mon cas.
L'erreur ci-dessus est due au fait que vous n'avez pas importé FormsModule. NgModel est présent dans le package FormsModule. Pour supprimer cette erreur, ajoutez donc import {FormsModule} from '@angular/forms'
et ajoutez FormsModule aux importations dans la classe app.module.ts.
procédez comme suit, vous devez utiliser [ngValue]
au lieu de [val]
<select [(ngModel)]="selectValue">
<option *ngFor="let entry of entries | async"
[ngValue]="entry.value">{{entry.label}}
</option>
</select>
Vous devez ajouter les éléments suivants à votre fichier app.module.ts
.
import { FormsModule } from '@angular/forms';
Et,
@NgModule({
imports: [
FormsModule,
...
]})