2017-02-02 3 views
6

У меня есть приложение с угловым приводом. У меня есть компонент переключения, который я передаю в переключение. Моя проблема в том, что двухсторонняя привязка данных не работает, если я не перехожу в toggle boolean как объект. Есть ли способ заставить это работать без использования EventEmitter или передачи переменной в качестве объекта. Это должно быть повторно используемым компонентом, и приложение сильно управляется данными, поэтому передача значения в качестве объекта не является вариантом. Мой код ....Angular2 Component @Input двусторонняя привязка

toggle.html

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

toggle.component.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> 
+0

http://stackoverflow.com/documentation/angular2/8943/angular2-input-output#t=201702021650455443161 –

ответ

15

Для [(toggled)]="..." работать вам необходимо

@Input() toggled: boolean; 
    @Output() toggledChange: EventEmitter<boolean> = new EventEmitter<boolean>(); 

    changeValue() { 
    this.toggled = !toggled; 
    this.toggledChange.emit(this.toggled); 
    } 

Смотрите также Two-way binding

+0

Он будет очень разочарован тем, что «без использования EventEmitter или передавая переменную в качестве объекта "не может быть выполнено. Это похоже на то, что он не читал базовый синтаксис, о, эй, ссылку на синтаксический справочник. – silentsod

+0

Он даже импортировал «EventEmitter». Это может быть не так плохо, как вы ожидаете ;-) –

+0

Это действительно сработало для меня. Первоначально я использовал его для использования эмиттера событий, который был связан с функцией в родительском компоненте. Это не было очень многоразовым, поэтому я задал вопрос, есть ли способ сделать это. Этот ответ почему-то меняет родительскую переменную –