Параметр передачи Nativescript во вложенный компонент

Я делаю приложение с angular 5 и Nativescript. Что ж, в приложении у меня разные страницы (компоненты), и все они имеют одно и то же нижнее меню, которое является одним компонентом. Мой вопрос заключается в том, как передать параметр в компонент меню, потому что в компоненте меню мне нужно знать, что это текущая страница, например, для установки класса, активного для текущего пункта меню страницы.

Пример одной страницы:

<Page>
    <ActionBar title = "" class = "action-bar">
        <StackPanel orientation = "horitzontal">
            <Label class = "action-title" text = "Canciones"></Label>
        </StackPanel>
    </ActionBar>
    <StackLayout class = "page">
    <ListView [items] = "filteredSongs" class = "songs-listview" (itemTap) = "songClick($event)" *ngIf = "!isLoading">
        <ng-template let-item = "item">
            <StackLayout>
                <Label [text]='item.SON_NAME'></Label>
            </StackLayout>
        </ng-template>
    </ListView>
    <StackLayout verticalAlignment = "center" *ngIf = "isLoading" class = "loading-stack">
        <ActivityIndicator busy = "{{ isLoading }}"></ActivityIndicator>
    </StackLayout>
</StackLayout>
<main-menu></main-menu> // THE MENU COMPONENT

1
0
776
1

Ответы 1

Если я правильно понимаю, компонент вашей страницы является родительским, а главное меню - дочерним. Вы хотите использовать входная привязка.

1) Измените тег главного меню на что-то вроде <main-menu [currentPage] = "Canciones"></main-menu>. Это отправит вход в компонент главного меню с именем currentPage и значением Canciones.

2) Затем вам нужно изменить MainMenuComponent, чтобы использовать только что привязанный ввод.

а) добавить import { Input } from '@angular/core';

б) внутри класса компонента объявить Input: @Input() currentPage: string;

c) при необходимости используйте переменную currentPage.

Освоив основы привязки ввода, вы можете изменить тип ввода и, в более общем смысле, привязать ссылку к текущему компоненту страницы.

Дэйвид

Другие вопросы по теме