尝试在路由事件后显示弹出窗口我面临此问题:
routerLink
点击后多次触发,因此我打开了许多弹出窗口。this
中subscribe
的值是否是我的组件的副本?,否则会导致此问题的原因以及如何解决它。
非常感谢。代码:
@Component({
template ='<a routerLink ="/something" >'
})
export class MyComponent implements OnInit{
firstcall : boolean = true;
constructor(private _router : Router){
this._router.events.filter(event => event instanceof NavigationStart && something)
.subscribe( (event) => {
if(this.firstcall) {
this.showPopup()
this.firstcall=false
}
}
}
}
即使this._router.events.distinct(event => event['url']).subscribe
无法正常工作
答案 0 :(得分:0)
在订阅调用之前添加一个“this”变量(类),并在subscribe中使用该变量,否则它使用subscribe方法的“this”实例。
试试这个,
@Component({
template ='<a routerLink ="/something" >'
})
export class MyComponent implements OnInit{
firstcall : boolean = true;
that : any = this;
constructor(private _router : Router){
this._router.events.filter(event => event instanceof NavigationStart && something)
.subscribe( (event) => {
if(that.firstcall) {
that.showPopup()
that.firstcall=false
}
}
}
}
希望这有帮助!