我想你可以使用EventEmitter 1 。在组件中,您可以在加载时发出任何消息。在另一个组件中,您可以订阅eventemitter。
你可以用 @ViewChildren 这是非常相似的,但也适用于之前尚未出现的元素 AfterViewInit 生命周期钩。而且它将你的元素包裹在一个 QueryList 。
@ViewChildren
AfterViewInit
QueryList 确实有 changes 属性,这是一个可以订阅的可观察对象。实现可能看起来像这样:
QueryList
changes
export class SomeComponent implements AfterViewInit { @ViewChildren(ChildComponent) children: QueryList<ChildComponent>; ngAfterViewInit(): void { this.children.changes.subscribe(children => { children.forEach( (child: ChildComponent) => { child.somePublicMethod(); }); }); } }
我使用@input()将父值传递给child并使用
ngOnChanges (changes: SimpleChanges) { for (let propName in changes) { let change = changes[propName]; console.log(change); }
}
其中ngOnChanges订阅更改并存储当前值和先前值