首页 文章

角度4重新路由组件不重新加载

提问于
浏览
0

我有一个组件:

  • router-outlet 加载到视图中

  • 在其构造函数中:订阅已初始化的ngrx Store veriable

  • 在其构造函数中:根据可验证的相关子路径/子组件进行控制 .

ReRoutingComponent.ts

export class ReRoutingComponent implements OnInit {
HOF$:Observable<any>;
HOF:any;

isUHC:boolean;
constructor(
    private _store:Store<any>,
    private _router:Router,
    private _route:ActivatedRoute
) {
    this.HOF$ = _store.select(from_costumer.getHOF);
    this.HOF$.subscribe((v:any)=> {
        this.HOF = v;
        this.isUHC = this.HOF['isUHC'];
        if(this.isUHC) {
            this._router.navigate(['../uscostumer'], {relativeTo: this._route});
        }else {
            this._router.navigate(['../globalcostumer'], {relativeTo: this._route});
        }
    });
}
ngOnInit() {

}
}

因此,路径 domain.com/site/providers 默认路由到 domain.com/site/providers/globalcostumer ,如果分配了ngrx变量,则路由到 domain.com/site/providers/uscostumer .

我使用简单的 [router-link] 指令导航到 domain.com/site/providers ,而不是通过 _router.navigate .

The Problem

  • 当我使用相同的 router-outlet 链接导航回 ReRoutingComponent.tsdomain.com/site/providers 时, ReRoutingComponent.ts 构造函数未运行,组件未重新加载且ngrx订阅不会重新路由到相关组件 .

1 回答

  • 1

    您可以使用 ngOnInit 生命周期钩子来执行这些操作,并且每次路由到它时都会调用它 .

    export class ReRoutingComponent implements OnInit {
    HOF$:Observable<any>;
    HOF:any;
    subscription;
    isUHC:boolean;
    constructor(
        private _store:Store<any>,
        private _router:Router,
        private _route:ActivatedRoute
    ) {}
    
    ngOnInit() {
       this.HOF$ = _store.select(from_costumer.getHOF);
       this.subscription = this.HOF$.subscribe((v:any)=> {
            this.HOF = v;
            this.isUHC = this.HOF['isUHC'];
            if(this.isUHC) {
                this._router.navigate(['../uscostumer'], {relativeTo: this._route});
            }else {
                this._router.navigate(['../globalcostumer'], {relativeTo: this._route});
            }
        });        
    }
    
    ngOnDestroy() {
       this.subscription.unsubscribe();
    }
    
    }
    

相关问题