Взаимодействие компонентов в Angular2

Это моя проблема, у меня есть компонент приложения, компонент заголовка и домашний компонент. в шаблоне компонента приложения я использую <header></header> для создания компонента заголовка.

Теперь в домашнем компоненте я хочу получить доступ и вызвать метод компонента заголовка.

Если я использую инъекцию для захвата компонента заголовка, инжектор создаст новый экземпляр (кажется, что компоненты не являются одноэлементными).

Как я могу получить этот конкретный компонент заголовка, который уже создан?

Спасибо,


person Nav    schedule 17.03.2016    source источник


Ответы (1)


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

Я бы сделал сервис, который вы затем вызовете в своем компоненте. Сервис, о котором вы можете думать как о классе с кучей вызовов функций (сервисов) внутри них. Затем вам потребуется их в каждом компоненте, например:

import {My_Global_Service} from './global_services/MyService'

@Component{....} 
export class Header{

   constructor(private _my_global_service: My_Global_Service){}

}

Затем вы загрузите свой My_Global_Service, чтобы он был «одиночным» экземпляром во всем вашем приложении.

import {bootstrap}    from 'angular2/platform/browser';
import {My_Global_Service} from './global_services/MyService'

bootstrap(MyApp, [
      My_Global_Service
])

Затем вы можете просто вызвать эту же службу из своего домашнего компонента:

import {My_Global_Service} from './global_services/MyService'

@Component{....} 
export class Home{

   constructor(private _my_global_service: My_Global_Service){}

}

Это будет содержать все те же переменные/функции как в заголовке, так и в домашнем компоненте.

person Morgan G    schedule 17.03.2016