2016-12-20 2 views
0

У меня есть меню, построенное таким образом, в проекте Ionic2/Angular2:Углового 2 @Input() декоратор: использовать от машинописи

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    public appRoot; 
    public menuPages; 

    constructor(
     public navCtrl: NavController, 
     public modalCtrl: ModalController 
    ){ 
     //Initialize root page 
     this.appRoot = StreamPage; 

     //Declare pages for menu items 
     this.menuPages = [ 
     { 
      page: StreamPage, 
      name: "Home", 
      icon: "home" 
     }, 
     // more pages 

    menuOpenPage(page){ 
     if(page === 0){ 
      this.chatsModal(); 
     }else{ 
      this.appRoot = page; 
     } 
    } 

страница отображается в следующей навигационной компоненте, в том же menu.html файл:

<ion-nav id="mainNav" #content [root]="appRoot"></ion-nav> 

... так что, когда я хочу, чтобы открыть страницу, я вызываю из menu.html, то «menuOpenPage (страница)» функции, передавая страницу в качестве аргумента. Он отлично работает, но теперь, когда я создаю страницу для профиля, я также хочу пройти через декоратор @Input(), некоторые данные, чтобы определить, какой профиль пользователя я увижу.

I.e .: Я хочу открыть мой профиль, щелкнув изображение в верхней части sidemenu, поэтому я вызываю menuOpenPage (Profile), и каким-то образом передаю «currentUser» в качестве параметра. Другой пример: я нажимаю на профиль другого парня, поэтому теперь я передаю его objectId как параметр, чтобы получить его данные и уметь его видеть.

Ну, я просто не знаю, как это сделать. Я знаю, как это сделать из HTML, но ... как я могу использовать этот декоратор из машинописного текста?

ответ

1

В таком случае я бы предпочел использовать Injection Dependency. В частности, я бы определил класс сервиса (например, класс с @Injectable decoratori), который будет использоваться для хранения данных, которые я хочу разделить в разных частях приложения, и настройте DI так, чтобы экземпляр такого класса был фактически разделен между компонентом HomePage и которые фактически отвечают за получение или создание профиля.

Для получения дополнительной информации см. https://angular.io/docs/ts/latest/cookbook/component-communication.html.

Я надеюсь, что это поможет

+0

Спасибо, я дам ему попробовать прямо сейчас! Будет приниматься, если он работает – Zerok

+0

'@ Injectable' требуется только тогда, когда у самой службы есть зависимости. У него плохое имя. –

Смежные вопросы