Angular2 Composant @Input liaison bidirectionnelle

J'ai piloté par les données Angulaires de l'application. J'ai une bascule composant que je passe dans une basculé de l'état. Mon problème est que les deux sens de la liaison de données ne semble pas fonctionner à moins que je passe dans la bascule booléenne comme un objet. Est-il un moyen pour obtenir que cela fonctionne sans l'aide d'un EventEmitter ou de passer la variable en tant qu'objet. C'est un composant réutilisable et que la demande est largement piloté par les données ainsi passer la valeur en tant qu'objet n'est pas une option. Mon code est....

toggle.html

<input type="checkbox" [(ngModel)]="toggled" [id]="toggleId" name="check"/>

bascule.composante.ts

import { Component, Input, EventEmitter, Output } from '@angular/core';

@Component({
  moduleId: module.id,
  selector: 'toggle-switch',
  templateUrl: 'toggle-switch.component.html',
  styleUrls: ['toggle-switch.component.css']
})

export class ToggleSwitchComponent {

  @Input() toggleId: string;
  @Input() toggled: boolean;

}

parent.component.html

<toggle-switch toggleId="toggle-1" [(toggled)]="nongenericObject.toggled"></toggle-switch>
stackoverflow.com/documentation/angular2/8943/...
Je tiens à souligner l'importance de mitch commentaire sur cette. Faire deux voies de liaison avec un parent du composant var travail, la @Output décorées EventEmitter doit être nommé en tant que correspondant @Input avec un Modifier suffixe à la fin, comme dans: @Input() activée: boolean; @Output() toggledChange: EventEmitter<boolean> = new EventEmitter<boolean>();

OriginalL'auteur Steve Fitzsimons | 2017-02-02