Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Получение переменной шаблона вложенного компонента (https://javascript.ru/forum/angular/78583-poluchenie-peremennojj-shablona-vlozhennogo-komponenta.html)

shtangen 07.10.2019 18:06

Получение переменной шаблона вложенного компонента
 
Добрый день, Моя проблема заключается в том, что я не могу считать значение переменной шаблона из дочернего компонента.

Задача стоит в том, чтобы вызывать контекстное меню, которое находится в вложенном кастомном компоненте.

Компонент меню в компоненте reusable-menu

Шаблон
<mat-menu #dynamicMenu="matMenu">
	<button 
		*ngFor="let incomeItem of incomeData; let i = index"
		(click)="onSelectMenu(incomeItem, i)"
		mat-menu-item
	>{{incomeItem.name + i}}
	</button>
</mat-menu>


Класс

export class ReusableMenuComponent implements OnInit {
	@Output() selectedItem = new EventEmitter();
	@Input() incomeData: any[] = [];

	constructor() { }

	ngOnInit() {}

	onSelectMenu(item: any, indx: number) {
		console.log(item);
	}


Компонент, в котором вызывается меню.

<td 
	mat-cell *matCellDef="let item"
	[matMenuTriggerFor]="dynamicMenu"
	(click)="onContextMenu($event, item)"
> bla bla bla </td>

    <reusable-menu
	[incomeData]="leadersTypeList"
    ></reusable-menu>


Каким образом я могу вытащить переменную dynamicMenu, которая находится в компоненте reusable-menu, чтобы использовать ее в качестве ссылки из родительского компонента?

destus 08.10.2019 06:25

shtangen,
в классе ReusableMenuComponent делаешь
@ViewChild('dynamicMenu', { static: true }) dynamicMenu: MatMenu;

и в классе компонента, который вызывает меню
@ViewChild(ReusableMenuComponent, { static: true }) reusableMenuCmp: ReusableMenuComponent

ну и далее обращаешься к dynamicMenu как this.reusableMenuCmp.dynamicMenu


Часовой пояс GMT +3, время: 15:09.