Javascript 选择标记上的角度多属性更改选项标记的值

Javascript 选择标记上的角度多属性更改选项标记的值,javascript,html,angular,tags,Javascript,Html,Angular,Tags,在选择标记上使用多属性时,Angular会更改选项标记的值。例如: this.options = [ { id: 1, name: 'me' }, { id: 2, name: 'you' } ]; <select [(ngModel)]="model" multiple> <option *ngFor="let o of options" [value]="o.id"> {{o.name}} </option> </select>

在选择标记上使用多属性时,Angular会更改选项标记的值。例如:

this.options = [
  { id: 1, name: 'me' },
  { id: 2, name: 'you' }
];

<select [(ngModel)]="model" multiple>
  <option *ngFor="let o of options" [value]="o.id"> {{o.name}} </option>

</select>
this.options=[
{id:1,名称:'me'},
{id:2,名字:'you'}
];
{{o.name}}
结果=>

<option value="0: '1'">me</option>
<option value="1: '2'">you</option>
me
你

角度将数组中对象的索引前置到选项标记的值。还有什么方法可以阻止这种行为吗?

好的,我最终得到了自定义
指令。我把它叫做
multipleNormalize
,并像
[multipleNormalize]=“o.id”

打字稿

import {Directive, ElementRef} from '@angular/core';
import {Input} from '@angular/core';

@Directive({
    selector: '[multipleNormalize]',
})

export class MultipleNormalizeDirective {

    @Input('multipleNormalize') model:any;

    constructor(private elementRef:ElementRef) {
    }

    ngOnInit(): void {
        this.elementRef.nativeElement.value = this.model;
    }


}
HTML


{{o.name}}

使用
[ngValue]
而不是
[value]

<select [(ngModel)]="model" multiple>
  <option *ngFor="let o of options" [ngValue]="o.id"> {{o.name}} </option>
</select>

{{o.name}}

您使用的angular的版本是什么?@Leguest angular 2.4.5这是因为
多个属性。因此
value=“1:'2'
不会影响
[(ngModel)]=“model”
它将是
[1,2]
anyway@Leguest,我知道,但有没有办法阻止这种行为。我需要的价值观是正确的多米特看起来工作,但实际上搞砸了以后的事情。请参见下面的屏幕截图。
<select [(ngModel)]="model" multiple>
  <option *ngFor="let o of options" [ngValue]="o.id"> {{o.name}} </option>
</select>