Я передаю функцию в качестве входа для дочернего компонента.Обратный вызов обращается к члену дочернего компонента и переключает значение:
rowAction(contact) {
this.currentlySelectedValues.toggle(contact.id);
}
Сама функция работает, но компилятор Angular жалуется, потому что:
error TS2339: Property 'currentlySelectedValues' does not exist on type 'SelectListTabComponent'.
Я знаю, что навремя объявления currentlySelectedValues
не существует в this
, но как только функция пройдена, она получает правильную область.
Есть ли лучший / другой способ сделать это?Это не будет работать в производстве, так как компилятор не будет его строить.
РЕДАКТИРОВАТЬ:
Я передаю функцию следующим образом:
<child-component
[rows]="dataService"
[initiallySelectedValues]="initiallySelectedValues"
[columns]="displayColumnsObjects"
[select]="true"
[multiSelect]="multiSelect"
(selectionChanged)="onSelectionChange($event)"
[rowClickAction]="rowAction">
</child-component>
В дочернем компонентеЯ получаю это как:
@Input() rowClickAction: Function;
И, наконец, я проверяю компонент, если я прошел один (так как он может быть не установлен)
doRowClickAction(row: any): void {
if (this.rowClickAction) {
this.rowClickAction(row);
}
}