Переменная шаблона Dynami c внутри привязки к событию - PullRequest
1 голос
/ 10 января 2020

У меня есть angular компонент с таким именем переменной шаблона

#name_{{i}}

внутри * ngFor, так что любой сгенерированный компонент имеет другое имя переменной. Мне нужно передать всю переменную (не как строку, как ссылку на переменную шаблона) в функцию в привязке события кнопки внутри того же * ngfor, как это

(click)="myFunction(name_{{i}})"

Теперь я не могу передать это так

(click)="myFunction('name_'+i)"

, потому что myFunction не хочет строку как переменную, а ссылку на переменную шаблона.

Передача интерполяции внутри привязки события вызывает эта ошибка:

Ошибка синтаксического анализатора: получена интерполяция ({{}}), где ожидалось выражение

Как передать переменную шаблона в функцию без использования интерполяции , поскольку переменная является Dynami c?

Ответы [ 2 ]

4 голосов
/ 10 января 2020

Вам не нужно делать это.

Вам не нужно генерировать имя для каждого экземпляра или даже использовать @ viewChildren.

Вы можете использовать одно и то же ссылочное имя для каждый элемент, сгенерированный ngFor.

Фактически, ссылочный вызов автоматически присоединяется к ссылочной переменной, с которой он генерируется внутри директивы * ngFor l oop (это похоже на область видимости внутри шаблона, передаваемого в ngFor директива)

Вы можете написать это так:

<div #item *ngFor="let item of list" (click)="myFunction(item)"></div>

Надеюсь, это поможет:)

1 голос
/ 10 января 2020

Вы можете использовать @ViewChildren

//Html
<element *ngFor="let each of all" (click)="myFunction(i)" #myElement></element>

//TS
 @ViewChildren('myElement') myElementList: QueryList<YourType>;

 myFunction(ind) {
  console.log(this.myElementList.toArray()[ind]);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...