【发布时间】:2020-12-11 12:49:38
【问题描述】:
我是第一次从 React 转向 Angular,并试图适应它。如何仅为我想要的项目而不是 JSON 列表中的每个项目执行单独的单击事件?
Logout() 服务有效。如果我不这样做;使用 ngFor 并将 click 事件直接传递给它应该做的事情的模板。但不是当我从 ngFor 中的 JSON 传递它时。我想我总是可以回到另一条路,但现在我很好奇。有趣的是,我添加了一个 alert() 并且事件正在触发,而不是注销功能中的 AuthService...
模板
<a
*ngFor="let usermenuitem of usermenu; let i = index"
[routerLink]="usermenuitem.link"
(click)="usermenuitem.goto()">
{{usermenuitem.title}}
</a>
组件
export class AuthorisedTopNavComponent implements OnInit {
usermenu:Object[] = [
{
title: 'Account',
link: '/account',
icon:"ua-home.svg",
goto: ()=>{},
},
{
title: 'Membership',
link: '/membership',
icon:"ua-home.svg",
goto: ()=>{},
},
{
title: 'Logout',
link: '/',
icon:"ua-home.svg",
goto: this.logoff,
},
]
constructor (
public authService: AuthService
) {}
ngOnInit() {}
logoff() {
this.authService.logout('/');
}
}
【问题讨论】:
-
你试过 ()=> this.logoff() 吗?
-
我怀疑
this没有绑定到正确的上下文。 -
试试
this.logoff.bind(this) -
@OwenKelvin BOOYAA !!!做得很好!如果你想要信用,请在此获得一个更简单的答案。谢谢
-
在同一个标签中使用 [routerLink] 和 (click) 很奇怪。我认为使用
goto:()=>this.logoff()可以工作,但我不确定
标签: javascript angular