首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接采取双击激活-如何使它只有一个?角5

链接采取双击激活-如何使它只有一个?角5
EN

Stack Overflow用户
提问于 2018-12-10 16:23:49
回答 1查看 2.4K关注 0票数 1

我正在构建一个应用程序的角5,并有一个导航组件,将显示各种标签/链接。当链接处于活动状态(当前正在被查看)时,选项卡将在其周围有一个边框,看起来就像是文件文件夹的前端。

问题是,我只需要单击一次就可以使链接显示为活动,但必须单击选项卡/文本两次才能使其真正加载页面。为什么是这样,怎么才能让它在一次点击后完全加载呢?这是因为我在一个链接上激活了两个单击事件吗?

在html中我的选项卡:

代码语言:javascript
复制
 <div *ngIf="authService.current_route == '/' ">
        <a [routerLink]="['']" data-toggle="tab">
            <li [class.active-link]="selectedTab === 0" (click)="changeroute()" (click)="selectTab(0)" >Site List</li>
        </a>
        <a [routerLink]="['/sites/map']" data-toggle="tab">
            <li [class.active-link]="selectedTab === 1" (click)="changeroute()" (click)="selectTab(1)" >All Sites Map</li>
        </a>
        <a [routerLink]="['/user-access']" data-toggle="tab">
            <li [class.active-link]="selectedTab === 2" (click)="changeroute()" (click)="selectTab(2)" >User Access</li>
        </a>
  </div>

在我的部分:

代码语言:javascript
复制
export class NavigationComponent implements OnInit {
   deciding_route: any;
   selectedTab = 0;
   current_site;
   local_route
   current_site_id

selectTab(tabId: number) {
    this.selectedTab = tabId;
 }
constructor(public authService: AuthService, private router: Router, private route: ActivatedRoute) { }

ngOnInit() {
}

changeroute() {
   this.authService.current_route = this.router.url;
   this.authService.route_with_id = this.authService.current_route
}

}

太感谢了!!如果我能澄清什么,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-10 17:42:05

问题可能与以下事实有关:在路由器实际更改路由之前,单击将触发,然后,调用您的方法changeroute();不会更改任何内容,因为此时路由仍然相同;但是,当您单击第二次时,路由已经更改,在第一个单击处理程序之后,因此它根据预期的路由进行更改。

解决方法之一是将changeroute()方法传输到路由更改侦听器:

代码语言:javascript
复制
constructor(private router: Router) {
  router.changes.subscribe((val) => { this.changeroute(); })
}

您还可以将单击处理程序向上移动,即移动到一个元素,该元素将是routerLink的父元素,以便在单击链接后进行单击,它可能也能工作。

进一步解释

考虑以下构成部分:

代码语言:javascript
复制
@Component({
  selector: 'my-test',
  template: `
    <div (click)="onClick1()">
      <button (click)="onClick2()">Click</button>
    </div>`,
})
export class TestComponent  {
  onClick1(){
    console.log('click 1')
  }  
  onClick2(){
    console.log('click 2')
  }
}

如果单击该按钮,它将显示控制台,如下所示:

代码语言:javascript
复制
click 2    
click 1

这意味着从子节点(提示)开始向父母传播,直到到达根节点为止(前提是在根节点之前,您将为所有父母提供侦听器)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53709667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档