2017-02-19 5 views
1

У меня есть один родитель, содержащий два дочерних компонента.Метод вызова в переменных шаблона, дающий исключение «неопределенное»

AppComponent 
    NotificationsComponent 
    MoveCopyComponent 

Я хочу испустить значения MoveCopyComponent для NotificationComponent. Всякий раз, когда я испускаю я получаю свойство неопределенное в NotificationComponent, как показано на скриншоте enter image description here

<notifications #notificationsMenu role="menuitem" dropdown-item 
     [caller]="'menu'" 
     (acceptShareFromMenuEvent)="shareAcceptModal.PinItem($event)"                   
     (contentShareAccepted)="shareAcceptModal.hide()"> 
</notifications> 

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

<movecopy-item #shareAcceptModal 
    (shareAcceptedandPlaced) = "notificationItem.contentAccepted($event)"> 

</movecopy-item> 

кнопку мыши в модальной (movecopy компонента) shareAcceptedandPlaced событие вызвано, по которым мне нужно выполнить contentAccepted (..) метод в моем компоненте уведомления, как показано ниже.

shareAcceptedandPlaced(){ 
     this.shareAcceptedandPlaced.emit(this.sharedItemPinnedInfo);  
} 

Что происходит здесь является то, что компонент уведомления содержит набор входящих компонентов в то время как движение-CopyItem является лишь компонентом выбора, чтобы поместить входящий компонент.

Когда #shareAcceptModal поднимает «(shareAcceptandPlaced)» событие для метода «notificationItem в» contentAccepted(), я получаю следующее исключение: «Невозможно назвать contentAccepted на неопределенный, как на скриншоте выше.»

Что я здесь делаю неправильно?

+0

Уточнить пост один раз, чтобы дать четкую информацию. Я прочитал ваш пост, и он не передает точную информацию. У меня есть идея о вашей проблеме, и у меня была такая ситуация.Но нужно немного больше информации. вы доступны в Teamviewer? – Aravind

+0

Спасибо Aravind, я добавил еще несколько подробностей. Я недоступен по телевизору, но доступен по Skype. – binDebug

ответ

1

Ошибки

  1. Вы не можете вызвать метод ребенка компонент, как

    (shareAcceptedandPlaced) = "notificationItem.contentAccepted($event)" 
    
  2. Вы излучающей переменную Output(), которая не является дочерним уведомлений в вашем случае shareAcceptedandPlaced()

Решение

  1. Поскольку у вас есть AppComponent как родитель, вы можете использовать @ViewChild() для обоих дочерних компонентов и получить доступ к свойствам и методам ваших обоих дочерних компонентов в

    @ViewChild(movecopyComponent) mcopyComp: movecopyComponent; 
    @ViewChild(NotificationsComponent) notificationMenu: NotificationsComponent; 
    
  2. Измените метод вызова в <movecopy> ниже

    <movecopy-item #shareAcceptModal (shareAcceptedandPlaced)="myContentChanged()"> 
    </movecopy-item> 
    
  3. Вы можете иметь свой метод myContentChanged(), чтобы справиться с этим, как

    myContentChanged() { 
         this.mcopyComp.properties.... 
         let temp: {...};   
         this.notificationMenu.contentAccepted(temp); 
    }