我有一项服务(MyService
)注入了我的MyComponent
中。我希望MyComponent
调用MyService
上的一个函数,并传递对该MyComponent
特定实例的某种引用,以便服务知道实例何时destroyed
从MyService
传递到MyComponent
以便MyService
知道何时销毁组件的正确对象是什么?我假设可以订阅某种MyService
来获取此信息。
编辑:更多上下文
MyService
负责创建@angular/cdk Portal
并具有两个功能:
attachComponent<T>(component: ComponentType<T>, data?: ComponentData<any>)
和
attachTemplate<T>(templateRef: TemplateRef<T>, viewContainerRef: ViewContainerRef)
。
此服务发出MyHeaderComponent
订阅的观察对象,以反映MyComponent
要求渲染的某些内容。但是,出于清理的原因,以便每个其他组件都不必导入此服务并清除标头的全部内容,我想知道该函数的调用方何时被销毁,并在服务中进行操作所以我只需要在那里编码。基本上,这个想法是,当attachTemplate
或attachComponent
的调用者被销毁时,应自动清除内容。我试图将这种逻辑集中在MyService
中,以便并非每个注入MyService
并使用此功能的组件都必须在ngOnDestroy中实现某种clearContent()
函数。
答案 0 :(得分:1)
尝试使用主题。您可以在MyComponent中创建一个主题,然后让MyService订阅该主题。您可以在MyComponent的ngOnDestoy生命周期挂钩中调用subject.complete()。然后MyService将了解MyComponent的状态。供参考的主题: https://blog.angularindepth.com/rxjs-understanding-subjects-5c585188c3e1