来自功能的routerLink链接

时间:2019-04-23 10:27:25

标签: angular

我的问题与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)

,因此找不到它。牙套从哪里来?

2 个答案:

答案 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;
}