如何检测新组件是加载在应用程序组件中还是放在普通位置?

时间:2019-05-28 05:20:18

标签: angular typescript ionic4

我正在使用带有离子骨架的角膜。为了从一个组件导航到另一个组件,我使用了离子导航控制器。 我想要的就是无论加载哪个组件,它都会在公共位置或应用程序组件中给出该组件的名称

1 个答案:

答案 0 :(得分:1)

您可以将全局服务与rxjs一起使用,以跟踪任何组件的活动,例如创建,销毁或其他活动

TrackerService

@Injectable({providedIn:"root"}) //  root
export class TrackerService {

  private _sub = new Subject();
  constructor() { }

  public post(data:any) { //  send a data to subscriber 
    this._sub.next(data)
  }

  public subscribe(fx:any) : Subscription {  //  tracker activity 
    return this._sub.subscribe(fx);
  }

}

在任何组件中,只要注入init,销毁或在某些情况下(例如登录...),就可以注入跟踪器服务器并发布数据。

例如

  constructor(private _tracker:TrackerService) { }

  ngOnInit() {
    this._tracker.post({message:'FirstComponent is active'}); // send 
  }

  ngOnDestroy() { 
    this._tracker.post({message:'FirstComponent is deactive'});

  }

并且我已经在这样的应用程序组件上订阅了跟踪器服务

  ngOnInit() {

    this._tracker.subscribe(result => console.log(result)); // arrived 

  }
  

tracker订阅方法返回一个 subscription 对象,以便您可以   以后退订

stackblitz demo