Javascript 选择标记上的角度多属性更改选项标记的值
在选择标记上使用多属性时,Angular会更改选项标记的值。例如: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>
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>