使用Angular2变化检测机制
我可以知道我的对象的任何子体属性是否已更改吗? 我可以订阅一些会注意到我的事件吗?如果它们是使用Angular2变化检测机制,angular,Angular,我可以知道我的对象的任何子体属性是否已更改吗? 我可以订阅一些会注意到我的事件吗?如果它们是@Input()myProp,那么您可以使用@Output()实现ngOnChanges(changes)并触发事件,但您需要准备说明来执行此操作 @Component({ selector: 'child-cmp' }) { export class Child { @Input() fooInput:string; @Input() barInput:number; @Output()
@Input()myProp
,那么您可以使用@Output()
实现ngOnChanges(changes)
并触发事件,但您需要准备说明来执行此操作
@Component({
selector: 'child-cmp'
}) {
export class Child {
@Input() fooInput:string;
@Input() barInput:number;
@Output() changes:EventEmitter = new EventEmitter();
ngOnChanges(changes) {
this.changes.emit(changes);
}
}
@Output()
s发出的事件不会冒泡,因此您只会收到直接子级的通知。如果您需要更多级别的共享服务,请改用共享服务。您的答案对组件很好,但我的问题是关于对象/模型的。如果我有一个复杂的模型,例如学校->房间->椅子,并且我的用户正在更改特定椅子的名称。我能知道我的学校模式已经改变了吗?我想我必须每次检查一次ngOnChanges()检查?那么我不知道你的问题和Angular2有什么关系。你能添加一些代码来展示你真正想要完成的事情吗?在类中,您可以添加一个Rx.Subject
(因为EventEmitter
不建议用于@Outputs()之外的任何东西)
。然后将您的属性实现为getter/setter,并在set
中触发一个事件。我想我的问题并不特定于Angular2,但我希望Angular2可能会有一个解决方案。Angular2不处理普通类及其实例。
<child-cmp (changes)="childChangesHandler($event)">