1

注意:我只是从角度开始.. 好的,这就是我所拥有的:

<select class="form-control custom-select"
      [(ngModel)]=package
      (ngModelChange)="bindPackageCount(package)"
      formControlName="packagingProfile">
       <option *ngFor="let package of createdPackageData"
               [value]="package.count">
               {{package.package.name}} - {{package.type.name}}
       </option>
 </select>

通过提供 package.count 作为选择标签的 [value],我可以绑定到它并将其作为参数传递给 bindPackageCount。我想要做的是将完整的包(对象)作为参数传递,而不仅仅是 package.count(数字)。但是,当我这样做时

bindPackageCount(package) {
    // package resolves to [Object object]
}

根据其他人的问题.. 是的,这是一种反应形式,这是它的创建:

createPackagingForm() {
    this.packagingForm = this._fb.group({
        packagingProfile: ['', Validators.required]
    });
}

有任何想法吗?谢谢

4

2 回答 2

1

由于您使用的是反应形式,因此无需使用ngModelor ngModelChange。更改将被formControlName. 据我了解,您希望将整个package对象绑定到您的表单,这可以通过 using 来实现[ngValue],这与[value]绑定整个对象相反。所以你的选择看起来像这样:

<select formControlName="packagingProfile">
   <option *ngFor="let package of createdPackageData" [ngValue]="package">
           {{package.name}} - {{package.type}}
   </option>
</select>   

这样,您就可以将整个对象存储在表单控件中packagingProfile

演示

注意,断开的链接

于 2017-03-28T15:48:44.237 回答
0

您可以使用选项的单击事件并像这样获取包值

<select class="form-control custom-select"
      [(ngModel)]=package
      formControlName="packagingProfile">
       <option *ngFor="let package of createdPackageData"
               [value]="package.count" (click)="bindPackageCount(package)">
               {{package.package.name}} - {{package.type.name}}
       </option>
 </select>
于 2017-03-27T14:41:12.390 回答