2016-03-15 6 views
0

Это становится действительно раздражающим! У меня есть массив объектов, я нашел это решение: How to use select/option/NgFor on an array of objects in Angular2angular2 select value объект

, но в конце концов я делаю то же самое, что и в этом случае, но если я регистрирую свое событие $, это неопределенно .. возможно, потому что оно стробировано, но после этого не анализируется.

Вот пример моего кода:

<div class="container"> 
<div class="row" *ngFor="#condition of conditions;#conditionindex = index"> 
    <div class="col-xs-3"> 
     <select class="form-control" [ngModel]="stringify(condition)" (ngModelChange)="onChange(conditionindex, $event)"> 
      <option *ngFor="#c of catalog;#catalogindex = index" [value]="stringify(c)"> 
       {{c.name}} 
      </option> 
     </select> 
    </div> 
    <condition-detail [condition]="condition"></condition-detail> 
</div> 

<a class="btn btn-primary" (click)="newCondition()"><i class="glyphicon glyphicon-plus"></i></a> 

И это код компонента:

export class ConditionBuilderComponent implements OnInit { 
conditions: Condition[] = []; 
catalog: Condition[] = []; 

constructor(public _conditionService: ConditionService) { } 

getConditions() { 
    this._conditionService.getConditions().then(conditions => this.catalog = conditions); 
} 

ngOnInit() { 
    this.getConditions(); 
} 

stringify(o:any): string { 
    return JSON.stringify(o); 
} 

onChange(conditionsIndex, selectedCondition:string): void { 
    console.log(typeof selectedCondition); 
    //JSON.parse(selectedCondition); 
    console.log(selectedCondition); 
    //this.conditions[conditionsIndex] = this.catalog[condition]; 
    console.log(typeof selectedCondition); 
} 

Пожалуйста, помогите мне. Консольный журнал selectedCondition не определен.

ответ

1

Понял Allready :)

Вот решение:

<select class="form-control" [ngModel]="condition.name" (ngModelChange)="onChange(conditionindex, $event)"> 
    <option *ngFor="#c of catalog;#catalogindex = index" [value]="c.name"> 
       {{c.name}} 
    </option> 
</select> 

И файл компонента:

onChange(conditionsIndex, selectedCondition:string): void { 
    this.conditions[conditionsIndex] = this.catalog.find(condition => condition.name == selectedCondition); 
} 
2

С последней версией Angular2 (бета-14), поддержка выбрать в качестве объект добавлен.