Angular Service-订阅组件OnDestroy

时间:2019-03-16 17:11:03

标签: angular

我有一项服务(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要求渲染的某些内容。但是,出于清理的原因,以便每个其他组件都不必导入此服务并清除标头的全部内容,我想知道该函数的调用方何时被销毁,并在服务中进行操作所以我只需要在那里编码。基本上,这个想法是,当attachTemplateattachComponent的调用者被销毁时,应自动清除内容。我试图将这种逻辑集中在MyService中,以便并非每个注入MyService并使用此功能的组件都必须在ngOnDestroy中实现某种clearContent()函数。

1 个答案:

答案 0 :(得分:1)

尝试使用主题。您可以在MyComponent中创建一个主题,然后让MyService订阅该主题。您可以在MyComponent的ngOnDestoy生命周期挂钩中调用subject.complete()。然后MyService将了解MyComponent的状态。供参考的主题: https://blog.angularindepth.com/rxjs-understanding-subjects-5c585188c3e1