Angular可复用路由器变更观察者
创始人
2024-10-27 19:33:43
0

以下是一个示例解决方法,展示了如何创建一个可复用的路由器变更观察者:

  1. 创建一个名为RouterChangeObserverService的服务:
import { Injectable } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
import { Observable, Subject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class RouterChangeObserverService {
  private routerChangeSubject: Subject;

  constructor(private router: Router) {
    this.routerChangeSubject = new Subject();
  }

  observeRouterChanges(): Observable {
    return this.routerChangeSubject.asObservable();
  }

  startObservingRouterChanges(): void {
    this.router.events.subscribe(event => {
      if (event instanceof NavigationEnd) {
        this.routerChangeSubject.next(event);
      }
    });
  }
}
  1. 在需要使用路由器变更观察者的组件中,注入RouterChangeObserverService并使用observeRouterChanges()方法来订阅路由器变更事件:
import { Component, OnInit } from '@angular/core';
import { RouterChangeObserverService } from '路径/到/RouterChangeObserverService';

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponentComponent implements OnInit {
  constructor(private routerChangeObserver: RouterChangeObserverService) { }

  ngOnInit(): void {
    this.routerChangeObserver.observeRouterChanges().subscribe(event => {
      // 处理路由器变更事件
      console.log('路由器变更:', event);
    });
  }
}
  1. 在需要触发路由器变更事件的地方,注入RouterChangeObserverService并调用startObservingRouterChanges()方法来开始监听路由器变更事件:
import { Component, OnInit } from '@angular/core';
import { RouterChangeObserverService } from '路径/到/RouterChangeObserverService';

@Component({
  selector: 'app-another-component',
  templateUrl: './another-component.component.html',
  styleUrls: ['./another-component.component.css']
})
export class AnotherComponentComponent implements OnInit {
  constructor(private routerChangeObserver: RouterChangeObserverService) { }

  ngOnInit(): void {
    // 触发路由器变更事件
    this.routerChangeObserver.startObservingRouterChanges();
  }
}

这样,MyComponentComponent组件就可以订阅并处理路由器变更事件,而AnotherComponentComponent组件可以触发路由器变更事件。

相关内容

热门资讯

重大发现!中至九江脚本,衢州都... 重大发现!中至九江脚本,衢州都莱辅助软件(有挂开挂辅助器);无需打开直接搜索加薇136704302(...
透明了解!创思维激k辅助工具,... 【亲,创思维激k辅助工具 这款游戏可以开挂的,确实是有挂的,很多玩家在这款创思维激k辅助工具中打牌都...
一分钟快速了解!潮汕汇透视辅助... 一分钟快速了解!潮汕汇透视辅助,广西友乐免费辅助(有挂开挂辅助插件)这是一款可以让一直输的玩家,快速...
透视黑科技!天天爱柳州辅助器,... 透视黑科技!天天爱柳州辅助器,wepoker私人定制透视-最初有挂开挂辅助挂;无需打开直接搜索微信(...
推荐十款!碰胡碰胡滚筒有脚本吗... 推荐十款!碰胡碰胡滚筒有脚本吗,免费天天贵阳辅助工具(有挂开挂辅助挂)您好:碰胡碰胡滚筒有脚本吗这款...
透明神器!心悦透视辅助器免费,... 透明神器!心悦透视辅助器免费,pokermaster修改器-原本有挂开挂辅助安装;亲,心悦透视辅助器...
玩家必看科普!宝宝吃吃吃游戏辅... 玩家必看科普!宝宝吃吃吃游戏辅助,蜀山四川小程序辅助(有挂开挂辅助插件)1、下载安装好蜀山四川小程序...
透明总结!奇迹手游辅助,德普之... 透明总结!奇迹手游辅助,德普之星的辅助工具介绍-先前有挂开挂辅助软件;无需打开直接搜索打开薇:136...
科技通报!阿当比鸡有辅助吗,抓... 科技通报!阿当比鸡有辅助吗,抓住捣蛋鸡开挂(有挂开挂辅助软件);无需打开直接搜索加(薇:136704...
透明攻略!新星游辅助软件免费版... 透明攻略!新星游辅助软件免费版,德普之星有透视辅助吗-一向有挂开挂辅助安装;无需打开直接搜索微信(1...