2016-02-22 3 views

ответ

0

Если они @Input() myProp, то вы можете реализовать ngOnChanges(changes) и пожаротушения с использованием @Output(), но для этого вам нужно подготовить свои деканданты.

@Component({ 
    selector: 'child-cmp' 
}) { 
export class Child { 
    @Input() fooInput:string; 
    @Input() barInput:number; 
    @Output() changes:EventEmitter = new EventEmitter(); 

    ngOnChanges(changes) { 
    this.changes.emit(changes); 
    } 
} 
<child-cmp (changes)="childChangesHandler($event)"> 

События, испускаемые @Output() с не пузырь, поэтому вы получите только уведомления о прямых детей. Если вам нужно это для большего количества уровней, используйте общую службу.

+0

Ваш ответ хорош для компонентов, но мой вопрос был о объекте/модели. Если у меня сложная модель, например. Школа-> комнаты-> стулья , и мой пользователь меняет название конкретного кресла. Могу ли я узнать, что моя школьная модель была изменена? Я предполагаю, что мне нужно будет проверить его каждую проверку ngOnChanges()? – almog

+1

Тогда я не вижу, как ваш вопрос связан с Angular2. Можете ли вы добавить код, который показывает, что вы на самом деле пытаетесь выполнить? В классах вы можете добавить 'Rx.Subject' (потому что' EventEmitter' не рекомендуется использовать для чего-либо, кроме '@Outputs()'. Затем реализовать свои свойства как getter/setter и запустить событие в 'set' –

+0

. моя проблема не специфична для Angular2, но я надеялся, что, возможно, у Angular2 будет решение для этого. – almog

Смежные вопросы