Я использую Angular 2 RC4.Угловой 2 Привязать выбранный атрибут к динамически созданным настройкам
создать выберите элемент раскрывающегося списка, который связан с переменной в моем компоненте и создать возможности для этого выбора с помощью *ngFor
, например:
<select id="role-select" class="form-control" [(ngModel)]="foo.bars" multiple>
<option *ngFor="let bar of bars">{{bars}}</option>
</select>
Переменная bars
динамически заполняется:
ngOnInit(){
this._service.GetBars().subscribe(
result => {
this.bars = result;
},
err => {
console.log(err);
},
() => {}
);
}
Я также динамически заполнить foo.bars
переменную:
constructor(public _service: Service){
_service.GetFooBars()
.subscribe((data) => {
this.foo.bars = data;
},(err) => {
console.log(err);
}, () => {
// done
});
}
Теперь то, что я хочу сделать, - установить атрибут selected
на true для любых параметров, которые соответствуют bars
в foo.bars
. В настоящее время я использую это:
var roleSelect = document.getElementById("role-select");
this.foo.bars.forEach((v,i) => {
for (var j = 0; j < roleSelect.options.length; j++) {
if (roleSelect.options[j].text === v) {
roleSelect.options[j].selected = true;
}
}
});
Это отлично работает, но transpiler кидает ошибка говорят опции не существует на HTMLElement [] и я хотел бы немного более надежное решение.
Любая идея оценивается.
Неа, я все равно получите ошибки transpiler. и 'foo.bars' - массив, поэтому простое сравнение строки и массива не даст мне требуемого результата. тем не менее, мне было бы интересно узнать, действительно ли ngModel позаботится об этом – Colum
попытайтесь сделать плункер, чтобы люди могли вам помочь. Я не тестировал свой код, но он должен работать. Я вижу, что первое решение, вероятно, все еще вызывает ту же проблему, вы попробовали решение шаблона? – maxisam
, так что вы это исправите? как ? – maxisam