2016-10-10 2 views
0

Я пытаюсь сделать общий сервис для своего приложения.Общая служба в Angular2

import { Injectable } from '@angular/core'; 

@Injectable() 
export class SharedService { 
    testService() { 
    console.log('share!'); 
    } 
} 

Тогда я впрыснуть его поставщиков моего app.component, но когда я попытался вызвать его в конструкторе дочернего компонента, как это: constructor(public sharedService: SharedService) {} я получил ошибку: Can't resolve all parameters for MyComponent. Я также попытался ввести его в своих провайдерах app.module, а также получил эту ошибку. Что мне делать? Как правильно вводить его? Может ли кто-нибудь предоставить пример надлежащего общего сервиса для антивирусного приложения (у него есть несколько модулей)?

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

+0

Вы импортировали 'SharedService' в дочерний компонент? – micronyks

+0

Нет, но разве он просто не создаст новый экземпляр службы, который не является целью общей службы? –

+0

какая версия вы используете? – micronyks

ответ

4

Я считаю, что вы используете последнюю версию и хотите использовать однопользовательский сервис. Для этого вы должны зарегистрировать свою службу в @NgModule({}), как показано здесь,

import {Sharedservice} from 'valid path'; 

@NgModule({ 
    imports:[BroswerModule], 
    ... 
    providers:[SharedService] 
}) 

Теперь в детском и родительском компоненте просто импортировать Sharedservice в верхней части файла.

ПРИМЕЧАНИЕ: Удалите providers:[SharedService] с каждого компонента.

+0

при условии правильного ответа, должен быть «отмечен как ответ» –

0

providers@Component или @NgModule Анкета для того, чтобы связаться с поставщиком услуг и найти компанию, Это хорошо документированы уже раз zilion см:

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