我的问题与this非常相似,但不适用于我。我已经问过发帖人了,但没有得到答复,所以我去了。我基本上想从函数生成链接:
generator(linkFor, linkPath){
if (linkFor == 'msg'){
// now linkPath is something like 2/4
// and the route to read the message is message/view/2/4
return 'message/view/' + linkPath
}
}
,如果条件仍然存在。通过模板,我可以做到:
<a href="javascript:void(0)" [routerLink]="generator(data.type, data.source)">{{data.source_name}}</a>
现在正在生成链接,但添加了():
message/view/(2/4)
,因此找不到它。牙套从哪里来?
答案 0 :(得分:2)
上述[routerLink]出现性能问题。有什么缺点让我先行
尝试一下:
<a href="javascript:void(0)" [routerLink]="generator(data.type, data.source)">Test</a>
generator(linkFor, linkPath){
console.log('Generate URL for me');
}
注意:现在检查控制台打印了多少次,原因是此异步调用被调用并降低了应用程序性能
这是我们可以从函数生成链接的另一种方式
<a href="javascript:void(0)" (click)="generator(data.type, data.source)">Test</a>
import { Router } from '@angular/router';
constructor(private _router: Router)
generator(linkFor, linkPath){
console.log('Generate URL for me');
if (linkFor == 'msg'){
this._router.navigate(['message/view/' + linkPath])
}
}
注意:现在,检查控制台日志仅打印一次,这是实现从函数生成链接的更好性能的方法。
简而言之,即使未执行用户操作,[routerLink]异步调用也会达到函数无限方式。 (单击)仅根据用户操作起作用。
答案 1 :(得分:1)
generator(linkFor, linkPath){
if (linkFor == 'msg'){
return ['message', 'view', linkPath]
}
return null;
}