我在Angular2中创建一个由对象数组而不是字符串支持的select时遇到了麻烦。我知道如何使用ngOptions在AngularJS中实现这一点,但在Angular2中似乎行不通(我使用的是Alpha42)。
如果这是我想要的方式,我可以做第4条,但它似乎相当笨拙。还有别的办法吗?我是不是太早进入阿尔法了?我做了什么傻事吗?
import {Component, FORM_DIRECTIVES, NgFor} from 'angular2/angular2';
interface TestObject {
name:string;
value:number;
}
@Component({
selector: 'app',
template: `
<h4>Select String</h4>
<select [(ng-model)]="strValue">
<option *ng-for="#o of strArray" [value]="o">{{o}}</option>
</select>
<h4>Select Object via 2-way binding</h4>
<select [(ng-model)]="objValue1">
<option *ng-for="#o of objArray" [value]="o">{{o.name}}</option>
</select>
<h4>Select Object via event</h4>
<select [ng-model]="objValue2" (change)="updateObjValue2($event)">
<option *ng-for="#o of objArray" [value]="o">{{o.name}}</option>
</select>
<h4>Select Object via string</h4>
<select [ng-model]="objValue3.name" (change)="updateObjValue3($event)">
<option *ng-for="#o of strArray" [value]="o">{{o}}</option>
</select>
<div><button (click)="printValues()">Print Values</button></div>
`,
directives: [FORM_DIRECTIVES, NgFor]
})
export class AppComponent {
objArray:TestObject[] = [{name: 'foo', value: 1}, {name: 'bar', value: 1}];
objValue1:TestObject = this.objArray[1];
objValue2:TestObject = this.objArray[1];
objValue3:TestObject = this.objArray[1];
strArray:string[] = this.objArray.map((obj:TestObject) => obj.name);
strValue:string = this.strArray[1];
updateObjValue2(event:Event):void {
const value:string = (<HTMLSelectElement>event.srcElement).value;
this.objValue2 = this.objArray.find((obj:TestObject) => obj.name === value);
}
updateObjValue3(event:Event):void {
const value:string = (<HTMLSelectElement>event.srcElement).value;
this.objValue3 = this.objArray.find((obj:TestObject) => obj.name === value);
}
printValues():void {
console.log('strValue', this.strValue);
console.log('objValue1', this.objValue1);
console.log('objValue2', this.objValue2);
console.log('objValue3', this.objValue3);
}
}
我不知道阿尔法是什么样子的,但我现在正在使用测试版12,这工作很好。如果您有一个对象数组,请创建一个select,如下所示:
<select [(ngModel)]="simpleValue"> // value is a string or number
<option *ngFor="let obj of objArray" [value]="obj.value">{{obj.name}}</option>
</select>
如果你想在实际对象上进行匹配,我会这样做:
<select [(ngModel)]="objValue"> // value is an object
<option *ngFor="let obj of objArray" [ngValue]="obj">{{obj.name}}</option>
</select>
我有一个这样的数组 我想打印/显示对象键,如jam,ram,sam作为表格标题,其值在各自的表格中与Pprimeng表格成角度。我尝试了各种方法,但无法正确显示。动态值的Primeng表 如果我想显示,我需要数组在表单中自动显示 tdata中的值可能会动态更改,它们也来自后端和密钥
我知道要在数组中查找值是否存在,我可以使用indexOf,但如何使用对象数组呢?
越来越烦人了!我有一个对象数组我找到了这个解决方案:如何在Angular2中的对象数组上使用select/option/ngfor 但毕竟我做的和这个一样,但如果我记录我的$事件,它是未定义的…可能是因为它是stringified的,但之后没有解析回来。 下面是我的代码示例: 这是组件代码: 请帮帮我。未定义selectedCondition的控制台日志。
我对编程很陌生,我找不到我的问题的解决方案,你能给我解决方案吗? 我有这个JSON文件: 在我的js中需要类似这样的东西(但我想导入我的JSON以获得像这样的数组): 我不知道不使用jQuery该怎么做。 我已经试过了: 这几乎是我想要的,但当我在代码中使用它时,它不起作用,因为我不想要对象,而是像上面所说的和数组。
我正在尝试设置下拉的默认值,我设置了一个默认值的模型,但它没有更新选择 请参阅此https://plnkr.co/edit/bnm5yxx78iykv2Opazol?p=preview
我有一个数组。如何按类型、名称和大小以及递增量找到双重许可。增加数量后删除相同的。