如何将对象作为参数传递给 ngModelChange angular 2

How to pass object as a param on ngModelChange angular 2

注意:我刚从 angular.. 好的,这就是我的:

<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 作为 select 标记的 [value],我可以绑定到它并将它作为参数传递给 bindPackageCount。我想做的是将完整的包(对象)作为参数传递,而不仅仅是 package.count(数字)。然而,当我这样做时

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

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

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

有什么想法吗?谢谢

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

<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>

由于您使用的是反应形式,因此无需使用 ngModelngModelChangeformControlName 将捕获更改。据我了解,您想将整个 package 对象绑定到您的表单,这可以通过使用 [ngValue] 来实现,这与 [value] 绑定整个对象相反。所以你的 select 看起来像这样:

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

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

DEMO

注意,损坏link