Интерполяция не работает с методом щелчка - PullRequest
2 голосов
/ 30 сентября 2019

Мне нужно использовать интерполяцию внутри клика, но она не работает, я также пытался ng-click та же проблема возникла.

<li *ngFor="let link of dataService.roleNav[dataService.getRoleId()]" (click) ="{{link.method}}">
       {{ link.data }}
</li>

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Попробуйте так:

Решение 1

link = {
  data : 'abc',
  method: () => this.YourMethod()
}

HTML:

<li *ngFor="let link of dataService.roleNav[dataService.getRoleId()]" (click) ="link.method()">
      {{ link.data }}
</li>

Решение 2 (Если вы не можете изменить json)

HTML:

<li *ngFor="let link of testData" (click)="callMethod(link.method)">
    {{ link.data }}
</li>

TS:

  callMethod(methodName: string) {
    this[methodName]();
  }

См. Рабочая демонстрация

0 голосов
/ 30 сентября 2019

Создайте метод, чтобы получить ссылку на метод из вашего компонента, например,

 getFunctionReference(method){
   return this[method]
 }

Затем измените код на

<li *ngFor="let link of dataService.roleNav[dataService.getRoleId()]" (click) ="getFunctionReference(link.method)()">
               {{ link.data }}
</li>

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...